• GUI编程基础(一)


    GUI编程

    如何学习?

    • 这是什么
    • 它怎么玩
    • 该如何去在我们平时运用

    第一.组件

    • 窗口
    • 弹窗
    • 面板
    • 文本框dos
    • 列表框
    • 按钮
    • 图片
    • 交互
    • 监听事件
    • 鼠标
    • 键盘事件
    • 外挂

    1.简介

    GUI核心技术:Swing 丶 AWT

    缺点

    一丶因为界面不美观;
    二丶需要jre环境

    优点

    1.为什么我们要学习?

    • 可以写出自己心中的一些小工具
    • 工作时候,也可能需要维护到Swing界面,概率小
    • 了解MVC架构,了解监听!

    第二

    2.1 AWT介绍

    1. 包含了很多类和接口!GUI:图形用户界面编程
    2. 元素:窗口丶按钮丶文本框
    3. java.lang;java.awt;在lib中,放了很多jar包
    4. 组件Component;
      组件:
    • button,TextArea,Label都会添加到容器中
    • 容器Container包含(window["Frame", "Dialog"], 面板Panel["Applet"])

    关闭事件的解决

    import java.awt.*;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.awt.event.WindowListener;
    
    // Panel 可以看成是一个空间,但是不能单独存在
    public class TestPanel {
        public static void main(String[] args) {
            Frame frame = new Frame();
            // 布局的概念
            Panel panel = new Panel();
    
            //设置布局
            frame.setLayout(null);
    
            // 初始坐标
            frame.setBounds(300,300,500,500);
            frame.setBackground(new Color(40,161, 35));
    
            // panel 设置坐标,相对于frame
            panel.setBounds(50,50,400,400);
            panel.setBackground(new Color(0xC20303));
    
            // frame.add(panel)
            frame.add(panel);
    
            frame.setVisible(true);
    
            // 监听事件, 监听窗口关闭事件
            // 适配器模式: 就是写其中的某一种父类方法进行重写
            // 一种是WindowListener这种模式,是直接去重写所有父类的方法
            frame.addWindowListener(new WindowAdapter() {
                // 窗口关闭所需要做的事情
                @Override
                public void windowClosing(WindowEvent e) {
                    System.exit(0); // 0是正常退出,1是有异常的退出
                }
            });
        }
    }
    

    关闭图片
    关闭window

    布局管理

    • 流式布局
    • 东南西北中(页面布局)
    • 表格布局 Grid

    练习题1
    练习

    package ex01;
    
    import java.awt.*;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    
    public class TestLayoutResult {
        public static void main(String[] args) {
            // 总
            Frame frame = new Frame("TestLayoutResult");
            frame.setLocation(500,400);
            frame.setSize(700,500);
            frame.setBackground(Color.black);
            frame.setVisible(true);
            frame.setLayout(new GridLayout(2,1));
    
            // 4个面板
            Panel p1 = new Panel(new BorderLayout());
            Panel p2 = new Panel(new GridLayout(2,1));
            Panel p3= new Panel(new BorderLayout());
            Panel p4 = new Panel(new GridLayout(2,2));
    
            p1.add(new Button("West-1"),BorderLayout.WEST);
            p1.add(new Button("East-1"),BorderLayout.EAST);
            p2.add(new Button("p2-btn-1"));
            p2.add(new Button("p2-btn-2"));
            p1.add(p2,BorderLayout.CENTER);
    
            p3.add(new Button("West-2"),BorderLayout.WEST);
            p3.add(new Button("East-2"),BorderLayout.EAST);
            for (int i = 0; i < 4; i++) {
                p4.add(new Button("for-"+i));
            }
            p3.add(p4, BorderLayout.CENTER);
    
            frame.add(p1);
            frame.add(p3);
    
            // 关闭这个窗口
            frame.addWindowListener(new WindowAdapter() {
                @Override
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            });
    
        }
    }
    

    事件监听

    • 多个按钮共享一个事件
    package lesson02;
    
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    // 多个按钮共享一个事件
    public class TestActionTwo {
        public static void main(String[] args) {
            // 两个按钮,实现同一个监听
            // 开始 停止
            Frame frame = new Frame("开始-停止");
    
            Button button1 = new Button("start");
            Button button2 = new Button("stop");
    
            // 可以显示的定义触发返回的命令,如果不显示定义,则会走默认
            button2.setActionCommand("button2-stop");
    
            MyMonitor myMonitor = new MyMonitor();
            button1.addActionListener(myMonitor);
            button2.addActionListener(myMonitor);
    
            frame.add(button1, BorderLayout.NORTH);
            frame.add(button2, BorderLayout.SOUTH);
            frame.pack();
            frame.setVisible(true);
    
        }
    }
    
    
    class MyMonitor implements ActionListener {
    
        @Override
        public void actionPerformed(ActionEvent e) {
            // 获取按钮的信息
            System.out.println("按钮被点击了"+e.getActionCommand());
        }
    }
    
  • 相关阅读:
    CentOS6下OpenLDAP+PhpLdapAdmin基本安装及主从/主主高可用模式部署记录
    Curl运维命令
    kafka 基础知识梳理及集群环境部署记录
    RocketMQ 简单梳理 及 集群部署笔记
    Redis哨兵模式(sentinel)学习总结及部署记录(主从复制、读写分离、主从切换)
    Redis+Keepalived高可用环境部署记录
    Centos下Nodejs+npm环境-部署记录
    基于Ping和Telnet/NC的监控脚本案例分析
    linux dig 命令使用方法
    dnsjava usage
  • 原文地址:https://www.cnblogs.com/spider3658/p/15877815.html
Copyright © 2020-2023  润新知