JAVA入门————GUI图形界面管理器————AWT--输入监听,画笔绘图,鼠标监听,窗口监听,键盘监听

输入监听

文本框 ——TextFiled(添加在弹窗Frame里)——只允许编辑单行文本
  • 构造方法:
    TextFiled()——构造新文本字段
    TextField(int columns) ——构造具有指定列数( 近似平均字符宽度 ) 的新空文本字段
  • 成员方法:
    setText(String t)—— 将此文本组件显示的文本设置为指定文本
    setEchoChar(’*’)——替换弹窗中输入的文本
    setText("")——后台获取完文本之后 清除弹窗里文本
    getText()——获取此文本组件显示的文本信息

需求:在弹窗输入密码 在后台接收

public class WenBenListenerDemo {
    public static void main(String[] args) {
        new MyFrameDemo();
    }
}
class MyFrameDemo extends Frame {  //  相当于一个Frame类
    public MyFrameDemo() {
        TextField textField = new TextField();--- 创建一个文本框 TextField类表示文本框
        add(textField);  ----- 在窗口中添加文本框
        MyListener3 myListener3 = new MyListener3(); -------摁下enter 则触发这个输入框的事件
        textField.addActionListener(myListener3); ------- 在文本上装一个监听器 监听文本框输入的文字
        textField.setEchoChar('*');   ------ 设置替换编码
        setVisible(true);
        pack();
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.out.println("事件结束了");
                System.exit(0);
            }
        });
    }
}
class MyListener3 implements ActionListener{ // 监听器
    @Override
    public void actionPerformed(ActionEvent e) {
        TextField field = (TextField) e.getSource(); ------- 获取文本文件的内容 返回一个对象
        System.out.println(field.getText());  ------getText()获取此文本组件显示的文本-输出
        field.setText(""); ------- 获得完以后 文本框里面为空
    }
}

需求:制作一个简易计算器

public class CalculatorDemo {
    public static void main(String[] args) {
        new MyCalculator();
    }
}
class MyCalculator extends Frame{
    public MyCalculator(){
        setTitle("ZY的计算器");  // 设置标题
        /// 需要三个文本框——输入数字
        TextField num1 = new TextField(10);
        TextField num2 = new TextField(10);
        TextField sum = new TextField(20);
        //  需要一个按钮“=”——控制结果
        Button button = new Button("=");
        button.addActionListener(new MyListener4(num1,num2,sum)); // 在"="上装一个监听器
        //  需要一个标签“+”——装饰
        Label label = new Label("+");
        setLayout(new FlowLayout()); // 流式布局
        add(num1);
        add(label);
        add(num2);
        add(button);
        add(sum);
        setVisible(true);
        pack();
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.out.println("事件结束了");
                System.exit(0);
            }
        });
    }
}
class MyListener4 implements ActionListener{
    private TextField num1,num2,sum;  // 获取三个变量
    public MyListener4(TextField num1,TextField num2,TextField sum){
        this.num1 = num1;
        this.num2 = num2;
        this.sum = sum;
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        // 获得num1和num2
        int n1 = Integer.parseInt(num1.getText());//num1.getText()获取的是文本
        int n2 = Integer.parseInt(num2.getText()); // 用Integer.parseInt()转换成Integer类型
        // 进行加法运算 结果放进第三个框
        sum.setText(""+(n1+n2));
        // 清除前两个框里的文本
        num2.setText("");
        num1.setText("");
    }
}

画笔绘图

  • 重写Frame里方法:public void paint(Graphics g) ———设置画笔
  • 成员方法:
    g.setColor(Color.black)————设置画笔颜色

需求:画一个黑实心圆一个红空心正方形

public class PaintPenDemo {
    public static void main(String[] args) {
        new MyPaintPen().loadFrame();
    }
}
class MyPaintPen extends Frame{
    public void loadFrame() {
        setTitle("ZY的小画板");
        setBounds(200,200,700,700);
        setVisible(true);
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }
    @Override
    public void paint(Graphics g) {  -----设置画笔
        g.setColor(Color.black);
        //g.drawOval(100,100,100,100);// 空心圆
        g.fillOval(100,100,100,100);// 实心圆
        g.setColor(Color.red);
        g.drawRect(200,200,300,300);
    }
}

鼠标监听

MouseEvent鼠标事件:用户使用鼠标进行选择 切换页面等操作 包括鼠标摁下 松开 单击
类Point——表示 (x,y) 坐标空间中的位置的点,以整数精度指定

repaint()——刷新画笔

需求:用鼠标在窗口上画蓝色小正方形

  • 鼠标事件——使用户能够跟踪鼠标何时被按下、释放、单击、移动、拖动、何时进入一个组件、何时退出、何时滚动鼠标滚轮。
  • MyListener5本来应该实现MouseListener接口因为需要重写的方法太多 所以换成它的实现类 MouseAdapter——只重写mousePressed方法
  • MyDrawFrame myDrawFrame = (MyDrawFrame) e.getSource()——获取窗口上点的信息
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import java.util.Iterator;
public class MouseDemo {
    public static void main(String[] args) {
        new MyDrawFrame("ZY的小画板2");
    }
}
class MyDrawFrame extends Frame {
    ArrayList points;   ——————用集合points储存鼠标画下的点
    public MyDrawFrame(String title) {
        super(title);  //new Frame(title);super是Frame的对象
        setBounds(300, 300, 400, 400);
        setVisible(true);
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        
        points = new ArrayList(); ——————定义一个集合存放点
        
        addMouseListener(new MyListener5()); ——————对这个窗口装一个监听器
    }
    public void addPonit(Point point){
        points.add(point); ——————————把出现的点的集合放进集合Points中
    }
    ————————如何出现点:用画笔 画
    @Override
    public void paint(Graphics g) { // 画画
        Iterator iterator = points.iterator();
        while (iterator.hasNext()){
            Point point = (Point) iterator.next(); // 用Point接收
            g.setColor(Color.blue);
            g.fillRect(point.x,point.y,10,10);
        }
    }
    private class MyListener5 extends MouseAdapter {
        @Override
        public void mousePressed(MouseEvent e) {
            MyDrawFrame myDrawFrame = (MyDrawFrame) e.getSource();
          ——————————————鼠标点击一个 在窗口上画一个点
            myDrawFrame.addPonit(new Point(e.getX(),e.getY()));  ——————把点的坐标存进集合Points中
            myDrawFrame.repaint(); —————————— 每次点击完鼠标刷新一下
        }
    }
}

窗口监听

WindowAdapter——如果要实现 WindowListener 接口,则必须定义该接口内的所有方法。此抽象类将所有方法都定义为 null,所以只需针对关心的事件定义方法
  • 构造方法
    void windowActivated(WindowEvent e) —— 激活窗口时调用
    void windowClosing(WindowEvent e) ——窗口正处在关闭过程中时调用
public class WindowDemo {
    public static void main(String[] args) {
        new MyWindowTest();
    }
}
class MyWindowTest extends Frame {
    public MyWindowTest(){
        setBackground(Color.red);
        setBounds(500,200,300,300);
        setVisible(true);
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.out.println("窗口关闭了!");
                System.exit(0);
            }
            @Override
            public void windowActivated(WindowEvent e) {
                MyWindowTest myWindowTest = (MyWindowTest) e.getSource();
                myWindowTest.setTitle("窗口被激活了");
                System.out.println("窗口开启");
            }
        });
    }
}

键盘监听

KeyEvent键盘事件:用户使用键盘摁下 释放
WindowAdapter——接收键盘事件的抽象适配器类。此类中的方法为空。此类存在的目的是方便创建侦听器对象。
  • 如果要实现 KeyListener 接口,则必须定义该接口内的所有方法。此抽象类将所有方法都定义为 null,所以只需针对关心的事件定义方法
  • 使用组件的 addKeyListener 方法向该组件注册此侦听器对象 当按下、释放或键入某个键时,将调用该侦听器对象中的相应方法
  • 成员方法:
    void keyPressed(KeyEvent e) ——按下某个键时调用此方法。
    void keyReleased(KeyEvent e) ——释放某个键时调用此方法。
KeyEvent ——表示组件中发生键击的事件
  • 当按下、释放或键入某个键时,组件对象(如文本字段)将生成此低级别事件。该事件被传递给每一个 KeyListener 或 KeyAdapter 对象,这些对象使用组件的 addKeyListener 方法注册,以接收此类事件。发生事件时,所有此类侦听器对象都将获得此 KeyEvent。
  • “按下键”和“释放键” 事件 是低级别事件,依赖于平台和键盘布局。只要按下或释放键就生成这些事件,它们是发现不生成字符输入的键(如动作键、修改键等等)的惟一方式 通过 getKeyCode 方法可指出按下或释放的键,该方法返回一个虚拟键码
public class KeyDemo {
    public static void main(String[] args) {
        new MyKeyTest();
    }
}
class MyKeyTest extends Frame {
    public MyKeyTest(){
        setBounds(200,200,400,400);
        setVisible(true);
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                int keyCode = e.getKeyCode();
                System.out.println(keyCode);
                if(keyCode == KeyEvent.VK_UP){
                    System.out.println("你摁下了up键");
                }
                if(keyCode == KeyEvent.VK_DOWN){
                    System.out.println("你摁下了down键");
                }
            }
        });
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值