常用的几种监听器
1.键盘监听器:
1 class KeyFrame extends Frame { 2 public KeyFrame() { 3 setBounds(1,2,300,400); 4 setVisible(true); 5 6 this.addKeyListener(new KeyAdapter() { 7 //键盘按下 8 public void keyPressed(KeyEvent e) { 9 int keyCode = e.getKeyCode(); 10 if (keyCode == KeyEvent.VK_UP) { 11 System.out.println("按了上键"); 12 } 13 } 14 }); 15 }
2.鼠标监听器:
1 //适配器模式 2 private class MyMouseListener extends MouseAdapter{ 3 public void mousePressed(MouseEvent e) { 4 MyFrame frame = (MyFrame)e.getSource(); 5 //鼠标点击时,将会在界面上产生一个点 6 //这个点就是鼠标的点 7 frame.addPoint(new Point(e.getX(),e.getY())); 8 9 //每次点击鼠标都重新画一遍 10 frame.repaint(); 11 } 12 }
通过鼠标监听器实现画笔的功能:
1 class MyFrame extends Frame{ 2 ArrayList points; 3 //需要画笔,需要监听鼠标当前的位置,需要集合存储这个点 4 public MyFrame(String title) { 5 super(title); 6 setBounds(200,200,400,300); 7 setVisible(true); 8 //存鼠标点击的点 9 points = new ArrayList<>(); 10 //添加一个鼠标监听器 11 this.addMouseListener(new MyMouseListener()); 12 } 13 14 public void paint(Graphics g) { 15 //画画,监听鼠标的事件 16 Iterator iterator = points.iterator(); 17 while (iterator.hasNext()) { 18 Point point = (Point) iterator.next(); 19 g.setColor(Color.BLUE); 20 g.fillOval(point.x, point.y, 10, 10); 21 } 22 } 23 24 //添加一个点到界面上 25 public void addPoint(Point point) { 26 points.add(point); 27 } 28 29 //适配器模式 30 private class MyMouseListener extends MouseAdapter{ 31 public void mousePressed(MouseEvent e) { 32 MyFrame frame = (MyFrame)e.getSource(); 33 //鼠标点击时,将会在界面上产生一个点 34 //这个点就是鼠标的点 35 frame.addPoint(new Point(e.getX(),e.getY())); 36 37 //每次点击鼠标都重新画一遍 38 frame.repaint(); 39 } 40 } 41 }
3.窗口监听器:
1 class MyWindowListener extends WindowAdapter { 2 public void windowClosing(WindowEvent e) { 3 setVisible(false); 4 System.exit(0); 5 } 6 7 }
实例使用:
1 class WindowFrame extends Frame{ 2 public WindowFrame() { 3 setBackground(Color.blue); 4 setBounds(100,100,200,200); 5 setVisible(true); 6 addWindowListener(new MyWindowListener() { 7 public void windowClosing(WindowEvent e) { 8 setVisible(false); 9 } 10 11 public void windowActiated(WindowEvent e) { 12 System.out.println("windowActivated"); 13 } 14 }); 15 } 16 17 class MyWindowListener extends WindowAdapter { 18 public void windowClosing(WindowEvent e) { 19 setVisible(false); 20 System.exit(0); 21 } 22 23 } 24 }
分类:
Java GUI
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧