AWT

抽象窗口工具

组件:按钮(button) 文本域(textarea)

​ 标签(label) 容器(container)...

  • Frame窗口

    Frame frame = new Frame();
    //设置窗口可见性
    frame.setVisible(true);
    //设置窗口大小,并固定不变(不可拉伸)
    frame.setSize(width,height);
    frame.setResizable(false);
    //窗口颜色
    frame.setBackground(new Color(219, 232, 84));
    //窗口弹出位置
    frame.setLocation(x,y);
    //frame.setBounds(x,y,width,height)一次性设置位置和大小
  • Panel面板

​ 面板不能单独存在

  • Panel panel = new Panel();
    frame.setLayout(null);//开启窗口布局
    ...//panel布局方法和frame窗口类似
    frame.add(panel);

布局模式

  • 流式布局

    //在布局方法调用时,显式声明为流式布局
    frame.setLayout(new FlowLayout());
    //FlowLayout参数中可以声明为左/右对齐或者居中
    //比如,左对齐:frame.setLayout(new FlowLayout(FlowLayout.LEFT));
  • 东西南北中布局

    frame.add(Component i,BorderLayout.SOUTH);//第一个参数是一个Component对象,右边是BorderLayout的属性,可以选择将对象放到(东西南北中)对应的位置
  • 表格布局

    frame.setLayout(new GridLayout(2,1));//将frame窗口分割为两行一列的表格
    //参数内容 行数、列数、(行间距、列间距)
事件监听
  • frame窗口的监听

    frame.addWindowListener(new WindowAdapter(){
    ...//设置监听事件,例如
    public void windowClosing(WindowEvent e) {//窗口关闭监听
    System.exit(0);
    }
    //窗口关闭时关闭程序
    //也可以重写其他窗口监听方法,比如窗口激活..
    });
  • 组件的监听

    //以按钮Button的监听为例
    button.addActionListener(new ActionListener(){
    ...//监听事件
    });
  • 监听的类也可以通过接口实现类实现

画笔方法

Frame类里的paint方法传输了一个画笔型的参数,该类型提供了很多画图方法,可以直接使用,举个例子:

  • public void paint(Graphics e){//画笔型的参数
    e.setColor(Color.BLUE);//设置画笔颜色
    e.drawOval(100,100,200,200);//画一个圆形
    e.setColor(Color.RED);
    e.drawRect(100,100,200,200);//画一个矩形
    }
鼠标监听
  • frame.addMouseListener(new MouseAdapter() {
    @Override
    public void mouseClicked(MouseEvent e) {//重写鼠标点击触发事件
    ...
    }
    });
键盘监听
  •  frame.addKeyListener(new KeyAdapter() {
    @Override
    public void keyPressed(KeyEvent e) {
    int keyCode = e.getKeyCode();//getKeyCode方法捕获键盘码
    ...//键盘码为KeyEvent内部属性
    //比如KeyEvent.VK_UP是上键
    }
    });

Swing

  • JFrame窗口

    JFrame jFrame = new JFrame("My JFrame");
    //JFrame提供了更便捷的窗口关闭方法
    JFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    //JFrame的方法大多与Frame相同,但设置背景颜色这里,JFrame引入了容器的概念,将窗口视作一个容器,只能修改容器的颜色来达到修改背景颜色的目的
    Container container = jFrame.getContentPane();
    container.setBackground(Color.YELLOW);
  • JDialog弹窗

    //弹窗的初始化方法和窗口类似,可用触发事件触发弹窗,弹窗默认可关闭
    setTitle(String s);//设置弹窗名字
    setVisible(true);//设置弹窗可见
    setBounds(300,300,200,200);//设置位置和大小
    add(new JLabel("你点击了按钮",SwingConstants.CENTER));//添加标签
  • 动态追踪文本域的内容

    利用获取的Document对象,来添加一个DocumentListener监听器。因为该监听器就可以实现动态的跟踪文本框的输入内容。实现DocumentListener接口,必须重写该接口中的三个方法

    public class test implements DocumentListener {
    
        private JTextField textField;
    
        public void init() {
    textField = new JTextField();
    //获取与编辑器关联的模型
    Document doc = textField.getDocument(); //添加DocumentListener监听器
    doc.addDocumentListener(this);
    } //该方法可以跟踪文本框中输入的内容
    public void insertUpdate(DocumentEvent e) {
    Document doc = e.getDocument();
    String s = doc.getText(0, doc.getLength());//返回文本框输入的内容
    } //该方法可以跟踪文本框中移除的内容,例如:在文本框中点击Backspace
    public void removeUpdate(DocumentEvent e) {
    Document doc = e.getDocument();
    String s = doc.getText(0, doc.getLength());//返回文本框输入的内容
    } //该方法可以跟踪当文本框中已存在的内容改变时,获取相应的值
    public void changedUpdate(DocumentEvent e) {
    Document doc = e.getDocument();
    String s = doc.getText(0, doc.getLength());//返回文本框输入的内容
    } }
  • Icon图标

    图标绘制:

    class MyIcon extends JFrame implements Icon{
    private int width;
    private int height; public void init(){//初始化方法
    MyIcon myIcon = new MyIcon(15, 15);
    //创建标签的同时加入Icon图标
    JLabel jLabel = new JLabel("标签",myIcon,SwingConstants.CENTER);
    ...//设置窗口属性
    Container container = this.getContentPane();
    container.add(jLabel);//向容器中加入带有图标的标签
    }
    ...//构造方法
    @Override
    public void paintIcon(Component c, Graphics g, int x, int y) {
    g.fillOval(x,y,width,height);
    }//绘制图标
    @Override
    public int getIconWidth() {
    return width;
    }
    @Override
    public int getIconHeight() {
    return height;
    }
    }

    图片加载(加载目标图片作为图标)

    public class SecondIconTest extends JFrame{
    public SecondIconTest() {
    JLabel jLabel = new JLabel("图片Icon");
    //获得该类当前路径下名为img.png文件的路径
    URL url = SecondIconTest.class.getResource("img.png");
    jLabel.setIcon(new ImageIcon(url));//向标签中加入图片Icon
    jLabel.setToolTipText("这是个图标");//设置鼠标悬停显示
    ...//添加标签
    ...//设置窗口属性
    }
    }
  • 单选框、多选框

    //单选按钮
    JRadioButton button1 = new JRadioButton("Button1");
    JRadioButton button2 = new JRadioButton("Button2");
    //将按钮分到一组,不然可以多选
    ButtonGroup buttonGroup = new ButtonGroup();
    buttonGroup.add(button1);
    buttonGroup.add(button2);
    ...//向容器加入按钮
    //复选框
    JCheckBox button1 = new JCheckBox("Button1");
    JCheckBox button2 = new JCheckBox("Button2");
    ...//向容器加入复选框
  • 下拉框,列表框

    //下拉框
    JComboBox jComboBox = new JComboBox();
    //可以用jComboBox.addItem()方法加入选项
    //列表框
    JList list = new JList();//直接向构造器里丢入集合对象即可

Java基础篇——Gui编程的更多相关文章

  1. java基础篇---网络编程(TCP程序设计)

    TCP程序设计 在Java中使用Socket(即套接字)完成TCP程序的开发,使用此类可以方便的建立可靠地,双向的,持续的,点对点的通讯连接. 在Socket的程序开发中,服务器端使用serverSo ...

  2. java基础篇---网络编程(IP与URL)

    一:IP与InetAddress 在Java中支持网络通讯程序的开发,主要提供了两种通讯协议:TCP协议,UDP协议 可靠地连接传输,使用三方握手的方式完成通讯 不可靠的连接传输,传输的时候接受方不一 ...

  3. java基础篇---网络编程(UDP程序设计)

    UDP程序设计 在TCP的索引操作都必须建立可靠地连接,这样一来肯定会浪费大量的系统性能,为了减少这种开销,在网络中又提供了另外一种传输协议---UDP,不可靠的连接,这种协议在各个聊天工具中被广泛的 ...

  4. Java 基础篇之编程基础

    基本数据类型 java 是强类型语言,在 java 中存储的数据都是有类型的,而且必须在编译时就确定其类型. 基本数据类型变量存储的是数据本身,而引用类型变量存的是数据的空间地址. 基本类型转换 自动 ...

  5. 黑马程序员:Java基础总结----GUI图形化界面

    黑马程序员:Java基础总结 GUI图形化界面   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流!   GUI(Graphical User Interface)图形化界 ...

  6. Java基础-初识面向对象编程(Object-Oriented-Programming)

    Java基础-初识面向对象编程(Object-Oriented-Programming) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java是一门面向对象的程序设计语言.那么什 ...

  7. 小白—职场之Java基础篇

    java基础篇 java基础 目录 1.java是一种什么语言,jdk,jre,jvm三者的区别 2.java 1.5之后的三大版本 3.java跨平台及其原理 4.java 语言的特点 5.什么是字 ...

  8. java基础篇---I/O技术

    java基础篇---I/O技术   对于任何程序设计语言而言,输入输出(I/O)系统都是比较复杂的而且还是比较核心的.在java.io.包中提供了相关的API. java中流的概念划分 流的方向: 输 ...

  9. 黑马程序员:Java基础总结----GUI&网络&IO综合开发

    黑马程序员:Java基础总结 GUI&网络&IO综合开发   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 网络架构 C/S:Client/Server ...

  10. 黑马程序员:Java基础总结----网络编程

    黑马程序员:Java基础总结 网络编程   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 网络编程 网络通讯要素 . IP地址 . 网络中设备的标识 . 不易记忆,可用 ...

随机推荐

  1. JUC(10)深入理解CAS和ABA

    文章目录 1.CAS 2.原子引用解决ABA问题,版本号.修改后,可以看到 1.CAS package com.cas; import java.util.concurrent.atomic.Atom ...

  2. 最近无聊搭建一个齐博X1的下载页面

    https://layui.wanxiangsucai.com/ 用layui官方镜像站的模版 改了个齐博X1的下载页面 https://x1.wanxiangsucai.com/ 哈哈哈!!! 还有 ...

  3. HTML躬行记(2)——WebRTC基础实践

    WebRTC (Web Real-Time Communications) 是一项实时通讯技术,在 2011 年由 Google 提出,经过 10 年的发展,W3C 于 2021 年正式发布 WebR ...

  4. 【神经网络】丢弃法(dropout)

    丢弃法是一种降低过拟合的方法,具体过程是在神经网络传播的过程中,随机"沉默"一些节点.这个行为让模型过度贴合训练集的难度更高. 添加丢弃层后,训练速度明显上升,在同样的轮数下测试集 ...

  5. 配置jmeter环境变量

    好记性不如烂笔头. 本文采用jmeter5.4.1版本.  1. Linux系统 1.1 将jmeter上传到安装目录并解压 jmeter5.4.1链接: https://pan.baidu.com/ ...

  6. Java自定义排序:继承Comparable接口,重写compareTo方法(排序规则)

    代码: 1 import java.util.*; 2 3 /** 4 * 学习自定义排序:继承Comparable接口,重写compareTo方法(排序规则). 5 * TreeMap容器的Key是 ...

  7. CH58X/CH57X/V208 Observer(观察者)例程讨论讲解

    使用的是沁恒的CH582M的Observer例程与官方的demo板. 本例程的功能是主机扫描到从机的MAC地址并打印出来. 先对宏定义进行理解讨论. 最大响应扫描数为8,在串口调试助手那里可以看到打印 ...

  8. 2022!影响百万用户金融信用评分,Equifax被告上法庭,罪魁祸首——『数据漂移』!⛵

    作者:韩信子@ShowMeAI 数据分析实战系列:https://www.showmeai.tech/tutorials/40 机器学习实战系列:https://www.showmeai.tech/t ...

  9. 【云原生 · Kubernetes】Kubernetes 编排部署GPMall(一)

    1.规划节点 IP 主机名 节点 10.24.2.156 master Kubernetes master 节点 10.24.2.157 node Kubernetes worker 节点 2.基础准 ...

  10. i春秋Fuzz

    点开只有三个单词plz fuzz parameter 大概意思就是让我们疯狂尝试参数... 我们通过url尝试传入参数 ?user=123 ?name=123 ?username=123 ?id=12 ...