标签:Plate Java 进阶 graph Graphics 监听器 MouseEvent public 绘图板
先在show_plate()函数(方法:顺便提一提,Java的类中只有两个组成1)属性成员 2)方法函数,各种操作都要在函数中进行)建立一个窗体(顶级容器)JFrame Plate = new JFrame(),用来当所谓的绘图板,基本操作同之前的登陆界面,JFrame类型创建,然后设置大小(setSize()),位置(setLocationRelativeTo()),关闭机制(setDefaultCloseOperation())。
板有了,那么剩下的就是关键的画笔:由于绘制的线条是在用户鼠标按下和松开的过程来完成,所以我们的画笔本质上是一个监听器,鼠标监听器!监听器在之前的登陆界面中有提到过,一般采用重写Java原有接口的方式创建属于自己的监听器(由于接口是abtract抽象类,所以里边的函数要全部重写,不需要用的写成空函数即可)。
这里插入先讲讲这个自定义监听器类(DrawerListener)的实现:由于我们关注的是鼠标按下和松开这两个动作,所以我们需要的接口函数是MousePressed和MouseRelease,其他的为空即可。由于线条位置的确定需要坐标,所以在我们自己创建的DrawerListener中添加坐标属性:sx,sy,ex,ey;同时,由于画线的操作也是在鼠标松开的时候完成,所以我们需要利用Graphics(Java中的一个类)来实现绘线。
- Graphics :在类中创建一个Graphics对象,主要利用setColor,drawLine的绘制线条的函数。
- MousePressed(MouseEvent e) { }: 我们只需要读取坐标,可使用MouseEvent类中的函数getX(),getY()。
- MouseReleased(MouseEvent e) {}: 这里不仅要读取末坐标,还要进行线条的绘制(Graphics对象的函数使用)
1 import java.awt.Color; 2 import java.awt.Graphics; 3 import java.awt.event.MouseEvent; 4 import java.awt.event.MouseListener; 5 import java.awt.event.MouseWheelEvent; 6 7 //画笔监听器 8 public class DrawerListener implements MouseListener { 9 int x1,y1,x2,y2,x3,y3,sx,sy,ex,ey; 10 Graphics graph; //创建画布 11 public void mousePressed(MouseEvent e){ 12 System.out.println("Pressed"); 13 sx = e.getX(); //注意是得到事件源的坐标,鼠标点击为事件源 14 sy = e.getY(); 15 } 16 public void mouseReleased(MouseEvent e){ 17 System.out.println("Released"); 18 ex = e.getX(); 19 ey = e.getY(); 20 //松开时,画图 21 graph.setColor(Color.BLUE); //画笔颜色 22 graph.drawLine(sx, sy, ex, ey); 23 } 24 25 public void mouseClicked(MouseEvent e){} 26 public void mouseEntered(MouseEvent e){} 27 public void mouseExited(MouseEvent e){} 28 29 }画笔监听器
然后再回到我们主体的Drawer类中的show_plate()函数:往窗体里添加一个DrawerListener类,之后在窗体可见之后建立Graphics对象graph,接着获取窗体的画布:graph = Plate.getGraphics(); 接着讲获取的graph赋值给监听器的Pen.graph,因为最终的绘制操作是在监听器中实现的。(其实也可以直接将Plate的画布赋值给Pen.graph,就不创建一个新的对象了)。
1 public class Drawer { 2 public void show_plate() 3 { 4 JFrame Plate = new JFrame(); 5 Plate.setSize(1000,800); 6 Plate.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 7 Plate.setLocationRelativeTo(null); 8 9 //创建画笔监听器 10 DrawerListener Pen = new DrawerListener(); 11 Plate.addMouseListener(Pen); 12 Plate.setVisible(true); 13 //要在容器可见后,才创建画布 14 Pen.graph = Plate.getGraphics(); //注意Graphics 是一个类,获取窗体的画布对象 15 16 } 17 18 public static void main(String[] args){ 19 Drawer drawer = new Drawer(); 20 drawer.show_plate(); 21 } 22 }Drawer
进阶版:其实就是在原来的基础上增加按钮,来实现选择不同绘制图形,不同颜色
参考https://blog.csdn.net/a784296404/article/details/80150161
标签:Plate,Java,进阶,graph,Graphics,监听器,MouseEvent,public,绘图板 来源: https://www.cnblogs.com/GorgeousBankarian/p/10797572.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。