• Java:GUI-AWT(下)


    学习资料

    b站狂神说:https://www.bilibili.com/video/BV1DJ411B75F

    输入框与监听

    package com.zy7y.gui;
    
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    /**
     * @ProjectName: JavaSE
     * @PackageName: com.zy7y.gui
     * @Author: zy7y
     * @Date: 2020/8/15 下午8:26
     * @Description:
     */
    public class TestText01 {
        public static void main(String[] args) {
           new MyFrame1();
    
        }
    }
    
    class MyFrame1 extends Frame{
        public MyFrame1(){
            TextField textField = new TextField();
            add(textField);
            // 监听文本框输入的文字
            MyActionListener myActionListener = new MyActionListener();
            // 按下enter 触发事件
            textField.addActionListener(myActionListener);
    
            // 设置替换编码; 加密操作,输入内容将显示*
            textField.setEchoChar('*');
            setVisible(true);
            pack();
        }
    }
    
    class MyActionListener implements ActionListener{
    
        @Override
        public void actionPerformed(ActionEvent e) {
    //        e.getSource(); // 获得一些资源,返回的是一个对象
            TextField textField = (TextField) e.getSource();
            System.out.println(textField.getText()); // 获得输入框的文本
            // 将文本设置为空
            textField.setText("");
        }
    }
    

    简易加法计算器

    Snipaste_2020-08-15_21-17-19.png

    package com.zy7y.gui.awt;
    
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    
    /**
     * @ProjectName: JavaSE
     * @PackageName: com.zy7y.gui.awt
     * @Author: zy7y
     * @Date: 2020/8/15 下午8:51
     * @Description:
     */
    public class Calc {
        public static void main(String[] args) {
            new CalcFrame().loadFrame();
        }
    }
    
    // 布局
    class CalcFrame extends Frame{
        // 属性
        TextField textField,textField1,textField2;
    
        public void loadFrame(){
            setTitle("只能算加法的计算器.");
            textField = new TextField(10); // 10位文本框的长度
            textField1 = new TextField(10); // 10位文本框的长度
            textField2 = new TextField(20); // 10位文本框的长度
    
            // 按钮
            Button result = new Button("=");
    
            // 标签
            Label label = new Label("+");
    
            // 流式布局
            setLayout(new GridBagLayout());
            add(textField);
            add(label);
            add(textField1);
            add(result);
            add(textField2);
    
            // 处理 = 号的事件
            ResultListens resultListens = new ResultListens();
            result.addActionListener(resultListens);
    
    
            closeWindows();
            // 设置可见
            setVisible(true);
    
    
        }
    
        // 关闭窗口的方法
        public void closeWindows(){
            addWindowListener(new WindowAdapter() {
                @Override
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            });
        }
    
        // 事件处理:用内部类 直接就可以获取到外部类里面的属性
        private class ResultListens implements ActionListener{
    
            @Override
            public void actionPerformed(ActionEvent e) {
                // 获得文本内容
                int n1 = Integer.parseInt(textField.getText());
                int n2 = Integer.parseInt(textField1.getText());
                // String.valueOf, 可以转换成字符串
                textField2.setText(String.valueOf(n1 + n2));
    
                // 清除前面的框
                textField.setText("");
                textField1.setText("");
    
            }
        }
    
    }
    

    画笔

    Snipaste_2020-08-15_21-33-50.png

    package com.zy7y.gui.awt;
    
    import java.awt.*;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    
    /**
     * @ProjectName: JavaSE
     * @PackageName: com.zy7y.gui.awt
     * @Author: zy7y
     * @Date: 2020/8/15 下午9:25
     * @Description:
     */
    public class TestPaint {
    
        public static void main(String[] args) {
            new MyPaint().loadFrame();
        }
    }
    
    class MyPaint extends Frame{
    
        public void loadFrame(){
            setTitle("画笔实操");
            setBounds(200,200,600,500);
            setVisible(true);
            addWindowListener(new WindowAdapter() {
                @Override
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            });
        }
        // 重写paint方法,并能直接加载出对应的操作
        @Override
        public void paint(Graphics g){
            g.setColor(Color.red);
            // 实心的圆
            g.fillOval(100,100,100,100);
        }
    }
    

    鼠标监听器、模拟画图工具

    Snipaste_2020-08-16_12-59-39.png

    package com.zy7y.gui.awt;
    
    import java.awt.*;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.lang.reflect.Array;
    import java.util.ArrayList;
    import java.util.Iterator;
    
    /**
     * @ProjectName: JavaSE
     * @PackageName: com.zy7y.gui.awt
     * @Author: zy7y
     * @Date: 2020/8/16 上午11:55
     * @Description: 鼠标监听
     */
    public class MouseListener {
        public static void main(String[] args) {
            new MyFrameMouse("画图工具");
        }
    }
    
    class MyFrameMouse extends Frame{
        // 存点的集合
        ArrayList points;
        public MyFrameMouse(String title) {
            super(title);
            setBounds(300,300,300,300);
            // 存取鼠标点
            points = new ArrayList<>();
    
            // 鼠标监听
            addMouseListener(new MyMouse());
            setVisible(true);
        }
    
        // 重写画笔
        @Override
        public void paint(Graphics g){
            // 迭代器
            Iterator iterator = points.iterator();
            // iterator.hasNext 还能迭代否
            while (iterator.hasNext()){
                Point point = (Point) iterator.next();
                g.setColor(Color.green);
                g.fillOval(point.x,point.y,10,10);
            }
        }
    
        // 添加点
        public void addPaint(Point point){
            points.add(point);
            // 打印查看当前集合中有的数据:[java.awt.Point[x=162,y=157]]
            //[java.awt.Point[x=162,y=157], java.awt.Point[x=158,y=212]]
            //[java.awt.Point[x=162,y=157], java.awt.Point[x=158,y=212], java.awt.Point[x=229,y=143]]
            System.out.println(points);
        }
    
        // 适配器模式
        private class MyMouse extends MouseAdapter {
            @Override
            public void mousePressed(MouseEvent e) {
                MyFrameMouse myFrameMouse = (MyFrameMouse)e.getSource();
                myFrameMouse.addPaint(new Point(e.getX(),e.getY()));
    
                // 重画
                myFrameMouse.repaint();
            }
        }
    }
    

    效果图:

    Snipaste_2020-08-16_13-00-33.png

    窗口监听事件

    package com.zy7y.gui.awt;
    
    import java.awt.*;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    
    /**
     * @ProjectName: JavaSE
     * @PackageName: com.zy7y.gui.awt
     * @Author: zy7y
     * @Date: 2020/8/16 下午1:05
     * @Description: 窗口事件
     */
    public class TestWindow {
        public static void main(String[] args) {
            new MyWindowEvent();
        }
    }
    
        //
    class MyWindowEvent extends Frame {
        public MyWindowEvent() {
            super("窗口事件");
            setBounds(300, 300, 300, 300);
            setVisible(true);
            addWindowListener(
                    // 匿名内部类
                    new WindowAdapter() {
                        @Override
                        public void windowClosing(WindowEvent e) {
                            System.out.println("窗口关闭");
                        }
    
                        // 窗口激活
                        @Override
                        public void windowActivated(WindowEvent e) {
                            super.windowActivated(e);
                            System.out.println("窗口拥有焦点");
                        }
                    }
            );
        }
    }
    

    键盘监听事件

    package com.zy7y.gui.awt;
    
    import java.awt.*;
    import java.awt.event.KeyAdapter;
    import java.awt.event.KeyEvent;
    
    /**
     * @ProjectName: JavaSE
     * @PackageName: com.zy7y.gui.awt
     * @Author: zy7y
     * @Date: 2020/8/16 下午1:17
     * @Description: 键盘监听
     */
    public class TestKeyListener {
        public static void main(String[] args) {
            new MyKeyFrame();
        }
    }
    
    class MyKeyFrame extends Frame{
        public MyKeyFrame(){
            super("键盘监听");
            setBounds(200,200,200,200);
            setVisible(true);
            addKeyListener(new KeyAdapter() {
                @Override
                public void keyTyped(KeyEvent e) {
                    super.keyTyped(e);
                }
    
                // 键盘按下
                @Override
                public void keyPressed(KeyEvent e) {
                    // 获得输入键的字符值,但是 上下左右箭头,空格好像不行
                    System.out.println(e.getKeyChar());
                    // 获得输入键对应的code
                    System.out.println(e.getKeyCode());
                    //
                    if (e.getKeyCode() == KeyEvent.VK_SPACE) {
                        System.out.println("你按下了空格键!");
                    }
                }
            });
        }
    }
    
    作者:zy7y
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    VS2015调试ArcMap Add-in插件提示尝试运行项目时出错,无法启动程序“路径arcmap.exe”
    c#重命名文件,报错“System.NotSupportedException”类型的未经处理的异常在 mscorlib.dll 中发生”
    C# string contains 不区分大小写
    CSS div 高度满屏
    ArcGIS Server SOE开发之奇怪异常:
    C# 读取XML注释
    .Net程序员之不学Java做安卓开发:奇怪的Java语法
    .Net程序员之不学Java做安卓开发:Android Studio中的即时调试窗口
    JS去遍历Table的所有单元格中的内容
    判断 checkbox 是否选中以及 设置checkbox选中
  • 原文地址:https://www.cnblogs.com/zy7y/p/13512270.html
Copyright © 2020-2023  润新知