AWT—鼠标监听,窗口监听,键盘监听
鼠标监听
目的:实现鼠标作画
package com.deng.lesson03; import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.Iterator; //鼠标监听事件 public class TestMouseListener { public static void main(String[] args) { new MyFrame("画图"); } } //自己的类 class MyFrame extends Frame{ //画画需要画笔,需要监听鼠标当前位置,需要集合来储存这个点 ArrayList points; public MyFrame(String title){ super(title); setBounds(500,500,500,500); //存鼠标的点 points = new ArrayList<>(); setVisible(true); //鼠标监听器,针对这个窗口 this.addMouseListener(new MyMouseListener()); } @Override public void paint(Graphics g) { //画画,监听鼠标事件 Iterator iterator = points.iterator(); while (iterator.hasNext()) { Point point = (Point) iterator.next(); g.setColor(Color.BLUE); g.fillOval(point.x, point.y, 50, 50); } } //添加一个点到界面上 public void addPaint(Point point){ points.add(point); } //适配器模式 private class MyMouseListener extends MouseAdapter{ //鼠标 按下,弹起,按住不放 @Override public void mousePressed(MouseEvent e) { MyFrame frame = (MyFrame) e.getSource(); //这个我们点击个时候,就会在界面上产生一个点!画 //这个点就是鼠标的点 frame.addPaint( new Point(e.getX(),e.getY())); //每次点击鼠标都需要重画一遍 frame.repaint();//刷新 } } }
窗口监听
package com.deng.lesson03; import java.awt.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; //窗口监听事件 public class TestWindow { public static void main(String[] args) { new WindowFrame(); } } class WindowFrame extends Frame { public WindowFrame() { setBackground(Color.CYAN); setBounds(200, 200, 400, 400); setVisible(true); // addWindowListener(new MyWindowListener()); this.addWindowListener( //匿名内部类 new WindowAdapter() { //关闭窗口 @Override public void windowClosing(WindowEvent e) { System.exit(0); System.out.println("windowClosing"); } //激活窗口 @Override public void windowActivated(WindowEvent e) { WindowFrame source = (WindowFrame) e.getSource(); source.setTitle("被激活了"); System.out.println("windowActivated"); } }); } }
键盘监听
package com.deng.lesson03; import javafx.scene.input.KeyCode; import java.awt.*; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; //键盘监听事件 public class TestKeyListener { public static void main(String[] args) { new KeyFrame(); } } class KeyFrame extends Frame{ public KeyFrame(){ setBounds(4,5,400,400); setVisible(true); this.addKeyListener(new KeyAdapter() { //键盘按下 @Override public void keyPressed(KeyEvent e) { //获得键盘下的键是那一个,当前的码 int keyCode = e.getKeyCode();//不需要去记录这个值,直接使用静态属性 VK_XXX System.out.println(keyCode); if (keyCode == KeyEvent.VK_UP ){ System.out.println("你按了上键"); } //根据按下的不同操作,产生不同结果 } }); } }