- 监听事件——触发功能
界面设计
JFrame jf = new JFrame(“窗体的名字”); //创建一个JFrame对象
jf.setSize(1000,800); //窗体的大小
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //默认关闭退出,直接退出进程
jf.setVisible(true); //设置可视化硬件配置(显卡)
//还有很多其他的设置方法
监听事件——触发功能
myListener mylis = new myListener(); //定义一个监听器对象,这个监听器是自己写的方法,是继承的MouseListener接口
jf.addMouseListener(mylis); //让自己的界面将这个监听器功能加进去
Listener 监听器 —— MouseListener接口
===============================
监听器是个啥,能干什么?
-
监听到用户在界面上的操作,例如你鼠标的点击,按压,释放。
-
得知按钮(鼠标的按键)在窗体上操作得到的数据,例如鼠标点击的坐标、左键还有右键点击、点击的时间。
思路
设计一个myListener类,这个类继承的是MouseListener接口,所以MouseListener里面所有的方法都需要被重写,也就是让你自己决定监听到的这些操作应该执行什么程序。
如何设计类来继承MouseListener接口
-
重写接口的所有方法。
-
自己设计一些函数实现想实现的功能。
重写方法(必须是所有方法都要写,接口特性规定的)
public class byListener implements MouseListener {
int x1,y1,x2,y2,x,y; //可以全局也可以是局部变量
Graphics mypen; //定义画笔
@Override
public void mouseClicked(MouseEvent e) { //鼠标点击 //每个方法的传参是一个事件对象,事件是一个子类,捕获监视器监听到的数据(包括坐标、事件、左右按键等等)
x = e.getX(); //得到点击位置坐标
y = e.getY();
System.out.println(“click!”); //在运行框输出文字
//除了获得坐标还可以实现得到位置、时间等等(对象提示里面可以看的到全部e对象可调用的方法)
}
@Override
public void mousePressed(MouseEvent e) { //鼠标按压
x1 = e.getX();
y1 = e.getY();
System.out.println(“press!”);
}
@Override
public void mouseReleased(MouseEvent e) { //鼠标释放
x2 = e.getX();
y2 = e.getY();
System.out.println(“release!”);
}
@Override
public void mouseEntered(MouseEvent e) { //鼠标进入界面
System.out.println(“In”);
}
@Override
public void mouseExited(MouseEvent e) { //鼠标离开界面
System.out.println(“Out”);
}
//MouseListener接口只有这么多方法
}
自己设计函数
//画折线函数
Random random_num = new Random();
public void drawKLine(int x1,int y1,int x2,int y2,int range){ //实现一个画折线函数:折线实现方式:每次找一个线段中点,当线段中点距离左边(右边)端点小于3的时候就将这个点与左边(右边端点)连接起来。用递归的方法实现。
if(Math.abs(x2-x1)❤️){ //结束条件
mypen.drawLine(x1,y1,x2,y2); //调用画笔的连线方法
return;
}
int cx = (x1+x2)/2; //找中点坐标
int cy = (y1+y2)/2;
range *=0.7; //中点的y坐标要上下偏移,但是偏移的界限有限
cy+= random_num.nextInt(range)-(range/2); //在这个界限里面生成随机偏移值
drawKLine(x1,y1,cx,cy,range); //递归这个方法
drawKLine(cx,cy,x2,y2,range);
}
Graphics
=========
画笔类Graphics。定义画笔对象,需要从界面函数的getGraphics()方法获得。
Graphics pen = jf.getGraphics();
画笔对象可以调用很多方法,例如画线函数drawLine();然后这个方法可以用在监听器的方法里面。(监听器类里面没有界面函数,可以先定义画笔对象<作为监听器函数的属性成员>,方法内使用。在UI要通过界面的getGraphics()函数获得一个画笔对象,并将这个对象赋值给监听器的画笔成员,赋值的时机必须要在监听器方法使用到这个画笔之前)
mypen.drawLine(x1,y1,x2,y2);
练习
===
//实现画一条线,在这个线段之间生成一段折线图
//byUI.java
import javax.swing.*;
import java.awt.*;
public class byUI {
public void initUI(){
JFrame jf = new JFrame(“沪深K线图”);
jf.setSize(1000,800);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
总结
面试前的“练手”还是很重要的,所以开始面试之前一定要准备好啊,不然也是耽搁面试官和自己的时间。
我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。
面试题及解析总结
大厂面试场景
知识点总结
定要准备好啊,不然也是耽搁面试官和自己的时间。
我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。
面试题及解析总结
[外链图片转存中…(img-I4qvnorC-1714357008067)]
大厂面试场景
[外链图片转存中…(img-vw7JY6fA-1714357008068)]
知识点总结
[外链图片转存中…(img-XtXFkx2J-1714357008068)]