AWT—鼠标监听,窗口监听,键盘监听

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("你按了上键");
              }
               //根据按下的不同操作,产生不同结果
          }
      });
  }
}

posted on 2022-05-11 20:44  松下的蘑菇  阅读(128)  评论(0)    收藏  举报