Java Swing图形用户界面设计:基础概念与实战示例

Theo
Theo
发布时间:2026-10-13 | 2人浏览过
原创

Swing是Java基础类的一部分,作为GUI开发工具包,它基于AWT但使用纯Java编写,支持跨平台及可插拔外观风格。本文将解析Swing核心概念,并通过标准Hello World程序与用户登录框实例,展示从窗口创建到组件布局的实际操作步骤。

Swing简介与核心优势

Swing 是一个为 Java 设计的图形用户界面(GUI)工具包,属于 JFC (Java Foundation Classes) 的一部分。它以抽象窗口工具包(AWT)为基础,但提供了更丰富、灵活的功能和模块化组件。

相比 AWT,Swing 的主要特点包括:

  • 纯 Java 实现:所有组件用 Java 写成,同 Java 本身一样可以跨平台运行,不像 AWT 依赖本地原生设备。
  • 轻量级组件:虽然执行速度可能略慢于重量级 AWT 组件,但其优点在于能在所有平台上保持统一的行为。
  • 可插拔外观:支持更换的面板和主题,表面模仿操作系统默认主题,但实际由 Java 绘制,这意味着可在任意平台上使用 Java 支持的任意面板。

Swing 提供了如文本框、按钮、分隔窗格和表等多种 GUI 器件,开发人员仅需少量代码即可利用这些功能创建优雅的用户界面。

Hello World 窗口程序

以下是创建一个基本 Swing 窗口的完整示例。该程序包含创建窗口、设置标题栏文字以及处理窗口关闭事件的核心逻辑。

第1步:编写代码

在 HelloWorldSwing.java 文件中输入以下代码:

import javax.swing.*;
public class HelloWorldSwing {
  /**
   * 创建并显示GUI。出于线程安全的考虑,
   * 这个方法在事件调用线程中调用。
   */
  private static void createAndShowGUI() {
    // 确保一个漂亮的外观风格
    JFrame.setDefaultLookAndFeelDecorated(true);

    // 创建及设置窗口
    JFrame frame = new JFrame("HelloWorldSwing");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    // 添加 "Hello World" 标签
    JLabel label = new JLabel("Hello World");
    frame.getContentPane().add(label);

    // 显示窗口
    frame.pack();
    frame.setVisible(true);
  }

  public static void main(String[] args) {
    // 显示应用 GUI
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        createAndShowGUI();
      }
    });
  }
}

第2步:编译与运行

在命令行环境中,依次执行以下命令进行编译和启动:

$ javac HelloWorldSwing.java
$ java HelloWorldSwing

执行成功后,将弹出如下窗口:

用户登录框实例

为了实现更复杂的交互界面,例如包含用户名和密码输入的登录框,需要使用 JPanel 进行容器管理和布局控制。

第1步:编写登录界面代码

在 SwingLoginExample.java 文件中输入以下代码:

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField; 
public class SwingLoginExample {
  
  public static void main(String[] args) {  
    // 创建 JFrame 实例
    JFrame frame = new JFrame("Login Example");
    // Setting the width and height of frame
    frame.setSize(350, 200);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    /* 创建面板,这个类似于 HTML 的 div 标签
     * 我们可以创建多个面板并在 JFrame 中指定位置
     * 面板中我们可以添加文本字段,按钮及其他组件。
     */
    JPanel panel = new JPanel();  
    // 添加面板
    frame.add(panel);
    /* 
     * 调用用户定义的方法并添加组件到面板
     */
    placeComponents(panel);

    // 设置界面可见
    frame.setVisible(true);
  }

  private static void placeComponents(JPanel panel) {

    /* 布局部分我们这边不多做介绍
     * 这边设置布局为 null
     */
    panel.setLayout(null);

    // 创建 JLabel
    JLabel userLabel = new JLabel("User:");
    /* 这个方法定义了组件的位置。
     * setBounds(x, y, width, height)
     * x 和 y 指定左上角的新位置,由 width 和 height 指定新的大小。
     */
    userLabel.setBounds(10,20,80,25);
    panel.add(userLabel);

    /* 
     * 创建文本域用于用户输入
     */
    JTextField userText = new JTextField(20);
    userText.setBounds(100,20,165,25);
    panel.add(userText);

    // 输入密码的文本域
    JLabel passwordLabel = new JLabel("Password:");
    passwordLabel.setBounds(10,50,80,25);
    panel.add(passwordLabel);

    /* 
     *这个类似用于输入的文本域
     * 但是输入的信息会以点号代替,用于包含密码的安全性
     */
    JPasswordField passwordText = new JPasswordField(20);
    passwordText.setBounds(100,50,165,25);
    panel.add(passwordText);

    // 创建登录按钮
    JButton loginButton = new JButton("login");
    loginButton.setBounds(10, 80, 80, 25);
    panel.add(loginButton);
  }

}

第2步:编译与运行

同样在命令行中执行编译和运行指令:

$ javac SwingLoginExample.java
$ java SwingLoginExample

运行后将显示包含用户名输入框、密码隐藏框及登录按钮的界面:

Swing 核心组件概念解析

在上述代码中,涉及了以下关键 Swing 组件,理解其作用有助于灵活设计 UI:

  • JFrame:Java GUI 程序的基本窗口容器。它是屏幕上 window 的对象,能够支持最大化、最小化和关闭操作,是承载其他组件的顶层框架。
  • JPanel:一种轻量级容器,包含在 javax.swing 包中。它可以嵌套,功能是对窗体中具有相同逻辑功能的组件进行组合,便于管理布局和分组控件。
  • JLabel:用于显示文本或图像。可通过设置垂直和水平对齐方式,指定内容在显示区内的位置。默认情况下,只显示文本的标签是开始边对齐,只显示图像的标签则水平居中对齐。
  • JTextField:允许编辑单行文本的标准轻量级组件。
  • JPasswordField:专用于密码输入的文本域,输入的信息会被隐藏(以星号 * 或点号 . 代替),以确保安全性。
  • JButton:按钮类实例,用于触发特定动作,如示例中的 "login" 按钮。

总结

Swing 提供了比 AWT 更好的屏幕显示元素和跨平台一致性。通过掌握 JFrame 窗口框架、JPanel 容器布局以及基础控件的使用,开发者可以逐步设计出结构更复杂的图形用户界面。以上内容涵盖了 Swing 开发的初级核心知识,为后续深入实践奠定了基础。

以上就是Java Swing图形用户界面设计的详细内容,更多关于Java Swing入门的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表