图形化学习是外功,内功外功配合才能所向披靡。
一、JFrame
JAVA SWING
导入包import javax.swing.*
导入包import java.awt.*
增加代码:
EventQueue.invokeLater() ->{
JFrame frame =new JFrame(“Welcome”);
frame.setSize(500,500); //设置宽高
frame.setResizable(false); //不能改变大小
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //点击关闭按钮操作
frame.setVisible(true);
}
解释一下,因为swing是不安全单线程,所以官方推荐用EventQueue
二、JFrame子类
三、画布和图形绘制基础
MenuBar和Content Pane(Container)
要区分内容面板和窗口大小。
完善Frame类。
保持内容面板和窗口大小一致。
用子类方法,将 Canvas 与Frame分开。
上面的canvas.setprefreredSize可以删掉了,谁的事谁处理。
四、Graphics2D绘制
不友好,是JAVA历史遗留问题。
五、整理绘制类
新建AlgoVisHelper类
AlgoFrame类
六、 抗锯齿 和双缓存
知道概念,知道如何使用很重要
七、动画基础
AlgoFrame类完善
Main类
需要加入线程,事件队列只能处理较快的事件
Circle类碰撞检测
八、 可视化 MVC
继续优化代码,做好封装。数据层Circle、视图层AlgoFrame,控制层。
新建AlgoVisualizer类。
Main函数精简为
九、键盘事件
面向对象:实现一个接口,必须实现该接口的所有内容。
所以无法使用这种方式。
JAV提供了一个方式。
十、鼠标事件
注意Frame和Canvans大小不同,我们在Frame中创建的鼠标事件,获取的位置是Frame的。
y要位移menubar的高度
需要完整代码,请关注学点干货,点赞并转发该文章,然后私信干货菌获取。