Java Swing最详细基础知识总结

Java Swing最详细基础知识总结

什么是Java Swing

Java Swing是一个GUI工具包,用于在Java应用程序中创建可视化用户界面。它提供了许多功能强大的组件,包括按钮、文本框、标签和表格等,使得我们可以快速方便的创建GUI界面,对于Java开发者来说是非常重要的工具。

Java Swing组件

Java Swing提供了许多GUI组件,这些组件可以用于开发各种类型的应用程序。

  • JFrame:顶层容器,用于包含应用程序的主窗口。
  • JPanel:中层容器,用于组合和排列其他组件。
  • JButton:用于在GUI中添加按钮。
  • JTextField:用于在GUI中添加文本框。
  • JLabel:用于在GUI中添加标签。
  • JCheckBox:用于添加复选框。
  • JComboBox:下拉列表框,用于选择一个或多个选项。

Java Swing布局

Java Swing提供了不同类型的布局管理器,用于排列组件。

常用布局管理器

  • FlowLayout:按照指定的方向按照组件的添加顺序进行布局。
  • BorderLayout:将组件放置于指定区域(如顶部、中部、左侧等)。
  • GridLayout:将组件放置在指定的行列网格中。
  • BoxLayout:按照指定方向放置组件,类似于Flexbox。

示例

使用GridLayout布局管理器创建一个简单的计算器GUI界面。

public class GridLayoutExample extends JFrame {
    private JPanel panel;
    private JButton button1, button2, button3, button4, button5, button6, button7, button8, button9, button0, addButton, subtractButton, multiplyButton, divideButton, calculateButton, clearButton;
    private JTextField textField;

    public GridLayoutExample() {
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setTitle("Calculator");

        panel = new JPanel(new GridLayout(5, 3));
        textField = new JTextField();
        textField.setHorizontalAlignment(JTextField.RIGHT);

        // create buttons
        button1 = new JButton("1");
        button2 = new JButton("2");
        button3 = new JButton("3");
        button4 = new JButton("4");
        button5 = new JButton("5");
        button6 = new JButton("6");
        button7 = new JButton("7");
        button8 = new JButton("8");
        button9 = new JButton("9");
        button0 = new JButton("0");
        addButton = new JButton("+");
        subtractButton = new JButton("-");
        multiplyButton = new JButton("*");
        divideButton = new JButton("/");
        calculateButton = new JButton("=");
        clearButton = new JButton("C");

        // add buttons to panel
        panel.add(button1);
        panel.add(button2);
        panel.add(button3);
        panel.add(addButton);
        panel.add(button4);
        panel.add(button5);
        panel.add(button6);
        panel.add(subtractButton);
        panel.add(button7);
        panel.add(button8);
        panel.add(button9);
        panel.add(multiplyButton);
        panel.add(clearButton);
        panel.add(button0);
        panel.add(calculateButton);
        panel.add(divideButton);

        // add components to frame
        this.add(textField, BorderLayout.NORTH);
        this.add(panel, BorderLayout.CENTER);

        this.pack();
        this.setVisible(true);
    }

    public static void main(String[] args) {
        new GridLayoutExample();
    }
}

Java Swing事件处理

Java Swing中,组件与事件处理是紧密关联的。使用Java Swing可以通过以下三种方法来处理事件。

  • 匿名内部类:在组件中定义事件监听器。
  • 外部类:定义事件监听器的外部类。
  • 内部类:定义事件监听器的内部类。

示例

为按钮添加点击事件的示例。

public class ButtonExample extends JFrame implements ActionListener {
    private JButton button;

    public ButtonExample() {
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setTitle("Button Example");

        button = new JButton("Click Me");
        button.addActionListener(this);

        this.add(button);

        this.pack();
        this.setVisible(true);
    }

    public void actionPerformed(ActionEvent e) {
        if(e.getSource() == button) {
            System.out.println("Button clicked");
        }
    }

    public static void main(String[] args) {
        new ButtonExample();
    }
}

Java Swing GUI应用程序

最后我们通过一个完整的GUI应用程序来展示Java Swing的应用。

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

public class MyGuiApp implements ActionListener {
    private JFrame frame;
    private JPanel panel;
    private JButton button;
    private JLabel label;

    public MyGuiApp() {
        // create components
        frame = new JFrame("My GUI Application");
        panel = new JPanel();
        button = new JButton("Click Me");
        label = new JLabel("Hello, World!");

        // set properties
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 200);

        // add components
        panel.add(button);
        panel.add(label);
        frame.add(panel);

        // add event listener
        button.addActionListener(this);

        frame.setVisible(true);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == button) {
            label.setText("Button Clicked");
        }
    }

    public static void main(String[] args) {
        new MyGuiApp();
    }
}

以上就是Java Swing最详细基础知识总结的完整攻略,希望对大家有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java Swing最详细基础知识总结 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • java中ArrayList的两种排序方法实例

    接下来我将详细介绍Java中ArrayList的两种排序方法实例,步骤如下: 1. ArrayList排序的基本概念 在介绍排序方法之前,我们需要了解一些基本概念。ArrayList是Java API中的一个类,它用于存储和操作一系列对象。当我们创建一个ArrayList时,它是未排序的。 我们可以使用Collections类来对ArrayList进行排序。…

    Java 2023年5月26日
    00
  • java 字符串截取的实例详解

    Java 字符串截取的实例详解 在 Java 中,字符串截取是一个很常见的操作,它可以通过字符串的索引来实现。本篇文章将详细讲解 Java 字符串截取的实现方法和相关注意事项。 常用的方法 Java 字符串的截取可以使用 String 类的 substring() 方法,它有两个重载版本,分别是: public String substring(int be…

    Java 2023年5月26日
    00
  • SpringBoot定时任务两种(Spring Schedule 与 Quartz 整合 )实现方法

    Spring Boot提供了两种方式来实现定时任务:Spring Schedule和Quartz整合。下面是Spring Boot定时任务两种实现方法的详细攻略: 1. Spring Schedule实现定时任务 Spring Schedule是Spring Boot提供的一种轻量级的定时任务框架,可以非常方便地实现定时任务。以下是使用Spring Sche…

    Java 2023年5月14日
    00
  • Java操作Excel文件解析与读写方法详解

    Java操作Excel文件解析与读写方法详解 Excel文件是一种广泛应用于商业、金融等领域的数据处理工具。在Java开发中,操作Excel文件常常需要通过对Excel文件进行解析读取和写入操作。 Excel文件格式 Excel文件通常有两种常见的格式:xls和xlsx。其中,xls是Excel97-2003版本的二进制文件,而xlsx则是Excel 200…

    Java 2023年5月19日
    00
  • java实现系统托盘示例

    下面是“Java实现系统托盘示例”的完整攻略,包含两个示例说明。 1. 系统托盘简介 系统托盘是指在操作系统图标区(通常在屏幕最右下角)显示的小图标。Java提供了相关API,可以在Java应用程序中实现系统托盘功能。系统托盘通常用来表示应用程序正在运行,也可以在用户与应用程序之间提供快捷访问。 2. 示例1:创建简单系统托盘 下面是一个简单的Java程序,…

    Java 2023年5月24日
    00
  • 教你怎么用java实现客户端与服务器一问一答

    如何用Java实现客户端与服务器一问一答 1. 建立TCP连接 客户端调用Socket类的构造方法建立与服务器端的连接。在构造方法中需要传入服务器端的IP地址和端口号,示例代码如下: java String serverHost = “127.0.0.1”; // 服务器IP地址 int serverPort = 8888; // 服务器端口号 Socket…

    Java 2023年5月19日
    00
  • MIME Base64编码

    Base64是一种用于将二进制数据编码成可打印ASCII字符的编码方式。它由64个字符组成,包括A-Z、a-z、0-9以及+和/。它的编码规则非常简单:将3个字节的二进制数据(共24位)分成4组,每组6位,然后将这4组6位的值转换成一个可打印ASCII字符。 MIME Base64是Base64的一种变体,它是Multipurpose Internet Ma…

    Java 2023年4月25日
    00
  • java == 引发的线上异常详解

    让我来详细讲解一下“java == 引发的线上异常详解”。 概述 在Java开发中,我们通常会使用“==”来比较两个对象是否相等。但是,如果使用不当,就可能会引发线上异常。本文将会详细探讨在Java中使用“==”可能会遇到的问题,以及如何避免这些问题。 引发异常的问题 基本类型与包装类比较 在Java中,基本类型和其对应的包装类是不同的类型,它们互相之间并不…

    Java 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部