GUI程序设置

发布于:2022-12-19 ⋅ 阅读:(161) ⋅ 点赞:(0)

目录

什么是GUI

Swing中的主要组件

顶级容器

布局

事件处理


什么是GUI

GUI就是图形用户界面,Java中的图形用户界面由各种组件component组成,这些组件包括输入框(TextField).标签(Label),按钮(Button),容器(Container)等.

这些组件一般都在Java.awt包和javax.swing包.

早期JDK版本中java停工了AWT抽象窗口工具,但是由于功能有限,所以提供了Swing,这个功能性更强的工具.

Swing中的主要组件

顶级容器

JFrame:是一个带有标题行和控制按钮的窗口

JApplet:创建小应用程序时使用,它被包含在浏览器窗口中。

JDialog:创建对话框时使用。

JWindow:是一个不带有标题行和控制按钮的窗口

面板:面板(JPanel)是也是一个容器,但是与顶级容器不同的是,面板不能单独存在,只能加到其他容器内部,比如可以添加到JFrame上,面板可以嵌套面板.

布局

容器中包含各种组件,这些组件通常有不同的方式布局在这些容器中,每一个容器一般都有一个固定的布局管理器,Set Layout()方法可以改变容器的布局

FlowLayout(流式布局)

BorderLayout(边界布局)

Gridlayout(网格布局)

null(空布局)

事件处理

所谓事件处理就是接收用户的信息,并生成一个事件对象,这些信息包括用户鼠标的单击或者双击,此时就生成一个ActionEvent事件的类对象.除了接收对象的信息,并创建一个对象,还得有一个监听程序的接口,这个接口规定了接收该方法并做出回应的方法规范.上面的单击按钮,生成一个ActionEvent对象后,程序就会执行一个ActionListener监听接口中的actionPerformed方法

下面创建一个窗口,同时包含事件处理的功能

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: z'm
 * Date: 2022-09-13
 * Time: 20:22
 */
public class Demo1 extends JFrame implements ActionListener {
    //显示提示信息的文本框
    JTextField textInfo;
    /**
     * 构造函数,初始话窗口
     */
    public Demo1(){
        setSize(300,200);
        setLocationRelativeTo(null);
        setLayout(null);
        JButton bok = new JButton("Ok");
        //ok按钮左上角的坐标[20,30],宽100.高30
        bok.setBounds(20,30,100,30);
        //设置按钮标识符为OkCmd,用来识别ok按钮
        bok.setActionCommand("OkCmd");
        //添加对ok按钮监听,参数是一个实现监听接口类的对象
        bok.addActionListener(this);//本类以实现的接口
        JButton bcancel = new JButton("Cancel");
        bcancel.setBounds(150,30,100,30);
        bcancel.setActionCommand("CancelCmd");
        //添加对Cancel按钮监听,参数是一个实现监听接口类的队形
        bcancel.addActionListener(this);
        //标签:动作
        JLabel label = new JLabel("动作");
        label.setBounds(30,80,30,30);
        //显示结果的文本框
        textInfo = new JTextField("");
        textInfo.setBounds(60,80,200,30);
        //设置关闭窗口的操作为关闭窗口并结束程序运行
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //把ok按钮添加到窗口中
        add(bok);
        add(bcancel);
        add(label);
        add(textInfo);
        setVisible(true);
    }
    public static void main(String[] args) {
        new Demo1();
    }
    //重写ActionListener接口中的抽象方法
    public void actionPerformed(ActionEvent e) {
        //被监听的组件有动作发生,首先获取动作指令
        String actionCommand = e.getActionCommand();
        switch (actionCommand) {
            case "OkCmd":
                textInfo.setText("按下OK按钮");
                break;
            case "CancelCmd":
                textInfo.setText("按下Cancel按钮");
                break;
        }
    }
}