java基于GUI实现简单画笔小画板
在一块画板上实现鼠标点击画图案的功能(本文未实现拖动划线功能),供大家参考,具体内容如下
思路
与java设计GUI的大体思路一致, 先设置Frame类作为框架, 其中添加组件类作为功能补充. 该设计中需要设置鼠标监听类, 给frame加上组件
并自己实现一个监听类, implements需要重写所有方法, 所以使用适配器
给全局一个points数组变量, 保存所有点击的点的信息, 然后重写frame类的paint方法时改成迭代器依次画数组中的点
1 2 3 4 5 6 7 8 9 10 | @Override public void paint(Graphics g) { // paint listen on mouse event Iterator iterator = points.iterator(); while (iterator.hasNext()){ Point point = (Point) iterator.next(); g.setColor(Color.GREEN); g.fillOval(point.x, point.y, 10 , 10 ); } } |
完整代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.Iterator; public class testmousepaint { public static void main(String[] args) { MyFrame myFrame = new MyFrame( "IDEA" ); } } class MyFrame extends Frame{ ArrayList points; public MyFrame(String title) { super (title); setBounds( 200 , 200 , 400 , 400 ); this .addMouseListener( new MyMouseListener()); setVisible( true ); setBounds( 200 , 200 , 400 , 400 ); setBackground(Color.white); points = new ArrayList<>(); } @Override public void paint(Graphics g) { // paint listen on mouse event Iterator iterator = points.iterator(); while (iterator.hasNext()){ Point point = (Point) iterator.next(); g.setColor(Color.GREEN); g.fillOval(point.x, point.y, 10 , 10 ); } } public void addpoint(Point point){ points.add(point); } private class MyMouseListener extends MouseAdapter{ @Override public void mousePressed(MouseEvent e) { MyFrame frame = (MyFrame) e.getSource(); frame.addpoint( new Point(e.getX(), e.getY())); // click and paint every time frame.repaint(); } } } |
实现效果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
微信公众号搜索 “ 脚本之家 ” ,选择关注
程序猿的那些事、送书等活动等着你
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!
相关文章
详解Jenkins 实现Gitlab事件自动触发Jenkins构建及钉钉消息推送
这篇文章主要介绍了Jenkins 实现Gitlab事件自动触发Jenkins构建及钉钉消息推送,应该会对大家学习Jenkins有所启发2021-04-04java多线程通过CompletableFuture组装异步计算单元
这篇文章主要为大家介绍了java多线程通过CompletableFuture组装异步计算单元,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-04-04java虚拟机钩子关闭函数addShutdownHook的操作
这篇文章主要介绍了java虚拟机钩子关闭函数addShutdownHook的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2021-02-02
最新评论