java图形用户界面

在 Web 应用大行其道的今天,桌面应用似乎显得有些“老派”。但实际上,Java Swing 依然在许多领域发挥着不可替代的作用,比如 企业内部工具、离线管理软件、教学软件 等。本文就从基本的讲起。Java Swing 基础讲解Swing

java图形用户界面

在 Web 应用大行其道的今天,桌面应用似乎显得有些“老派”。但实际上,Java Swing 依然在许多领域发挥着不可替代的作用,比如 企业内部工具、离线管理软件、教学软件 等。本文就从基本的讲起。

Java Swing 基础讲解

Swing 是 Java 提供的 GUI(图形用户界面)框架之一,它建立在 AWT(Abstract Window Toolkit)之上,属于轻量级组件,具有跨平台特性。Swing 提供了丰富的 UI 组件,例如按钮(JButton)、文本框(JTextField)、表格(JTable)等,能够构建完整的桌面应用程序。

1. Swing 的基本概念

在 Swing 开发中,主要涉及以下几个核心概念:

JComponent:Swing 所有 UI 组件的基类,如 JButton、JLabel、JTextField 等。

JFrame:Swing 应用程序的主窗口,类似于浏览器的窗口。

JPanel:用于组织组件的容器,相当于一个面板。

JDialog:弹出式对话框。

LayoutManager:布局管理器,用于控制组件的排列方式。

事件监听机制:Swing 使用 事件驱动编程,用户的操作(如点击按钮)会触发相应的事件处理逻辑。

2. 创建 Swing 窗口

最基本的 Swing 窗口可以使用 JFrame 实现。

代码语言:javascript代码运行次数:0运行复制
import javax.swing.*;
public class SwingDemo {
    public static void main(String[] args) {
        // 创建窗口
        JFrame frame = new JFrame("Swing 窗口示例");
        frame.setSize(400, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // 创建标签
        JLabel label = new JLabel("Hello, Swing!", SwingConstants.CENTER);
        frame.add(label);
        // 显示窗口
        frame.setVisible(true);
    }
}

代码解析:

JFrame frame = new JFrame("Swing 窗口示例"); 创建一个主窗口,并设置标题。

frame.setSize(400, 300); 设置窗口大小。

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 关闭窗口时结束程序。

JLabel label = new JLabel("Hello, Swing!", SwingConstants.CENTER); 创建一个居中的文本标签。

frame.add(label); 将标签添加到窗口中。

frame.setVisible(true); 显示窗口。

3. 常用 Swing 组件

(1)按钮 JButton

代码语言:javascript代码运行次数:0运行复制
import javax.swing.*;
import java.awt.*;
public class ButtonExample {
    public static void main(String[] args) {
        JFrame frame = new JFrame("按钮示例");
        frame.setSize(300, 200);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JButton button = new JButton("点击我");
        button.addActionListener(e -> JOptionPane.showMessageDialog(frame, "按钮被点击!"));
        frame.setLayout(new FlowLayout());
        frame.add(button);
        frame.setVisible(true);
    }
}

解析:

JButton 创建按钮。

addActionListener() 监听按钮点击事件,点击后弹出消息框。

(2)文本框 JTextField

代码语言:javascript代码运行次数:0运行复制
import javax.swing.*;
public class TextFieldExample {
    public static void main(String[] args) {
        JFrame frame = new JFrame("文本框示例");
        frame.setSize(300, 200);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JTextField textField = new JTextField(20);
        JButton button = new JButton("提交");
        JLabel label = new JLabel("请输入内容:");
        button.addActionListener(e -> JOptionPane.showMessageDialog(frame, "输入内容:" + textField.getText()));
        JPanel panel = new JPanel();
        panel.add(label);
        panel.add(textField);
        panel.add(button);
        frame.add(panel);
        frame.setVisible(true);
    }
}

解析:

JTextField(20) 创建 20 列宽度的输入框。

button.addActionListener() 获取输入框文本并弹出消息框。

(3)多行文本 JTextArea

代码语言:javascript代码运行次数:0运行复制
import javax.swing.*;
public class MulTextFieldExample {
    public static void main(String[] args) {
        JFrame frame = new JFrame("多行文本框示例");
        frame.setSize(400, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JTextArea textArea = new JTextArea(5, 20);
        textArea.setLineWrap(true);  // 自动换行
        textArea.setWrapStyleWord(true);
        JButton button = new JButton("提交");
        JLabel label = new JLabel("请输入内容:");
        button.addActionListener(e -> JOptionPane.showMessageDialog(frame, "输入内容:" + textArea.getText()));
        JPanel panel = new JPanel();
        panel.add(label);
        panel.add(textArea);
        panel.add(button);
        frame.add(panel);
        frame.setVisible(true);
    }
}

解析:

textArea.setLineWrap(true) 自动换行

下面做一个登录的逻辑来示范一下处理流程

登录界面

代码语言:javascript代码运行次数:0运行复制
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class LoginFrame extends JFrame {
    private final JTextField usernameField;
    private final JPasswordField passwordField;

    public LoginFrame() {
        // 设置窗口标题
        setTitle("用户登录");
        setSize(300, 200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null); // 居中显示

        // 创建面板
        JPanel panel = new JPanel();
        panel.setLayout(new GridLayout(3, 2, 5, 5));

        // 用户名
        panel.add(new JLabel("用户名:"));
        usernameField = new JTextField();
        panel.add(usernameField);

        // 密码
        panel.add(new JLabel("密码:"));
        passwordField = new JPasswordField();
        panel.add(passwordField);

        // 登录按钮
        JButton loginButton = new JButton("登录");
        loginButton.addActionListener(new LoginAction());
        panel.add(loginButton);

        // 退出按钮
        JButton exitButton = new JButton("退出");
        exitButton.addActionListener(e -> System.exit(0)); // 退出程序
        panel.add(exitButton);

        // 添加面板到窗口
        add(panel);
        setVisible(true);
    }

    // 登录按钮点击事件
    private class LoginAction implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            String username = usernameField.getText();
            String password = new String(passwordField.getPassword());

            // 模拟用户名和密码验证
            if ("admin".equals(username) && "123456".equals(password)) {
                JOptionPane.showMessageDialog(LoginFrame.this, "登录成功!");

                // 关闭当前窗口
                dispose();

                // 跳转到主界面
                new MainFrame();
            } else {
                JOptionPane.showMessageDialog(LoginFrame.this, "用户名或密码错误!", "错误", JOptionPane.ERROR_MESSAGE);
            }
        }
    }

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

主界面

代码语言:javascript代码运行次数:0运行复制
import javax.swing.*;

public class MainFrame extends JFrame {
    public MainFrame() {
        setTitle("主界面");
        setSize(400, 300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);

        JLabel welcomeLabel = new JLabel("欢迎来到主界面!", SwingConstants.CENTER);
        add(welcomeLabel);

        setVisible(true);
    }
}

看下运行效果

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2025-04-03,如有侵权请联系 cloudcommunity@tencent 删除登录事件javaframejframe

发布者:admin,转转请注明出处:http://www.yc00.com/web/1747978503a4714110.html

相关推荐

  • java图形用户界面

    在 Web 应用大行其道的今天,桌面应用似乎显得有些“老派”。但实际上,Java Swing 依然在许多领域发挥着不可替代的作用,比如 企业内部工具、离线管理软件、教学软件 等。本文就从基本的讲起。Java Swing 基础讲解Swing

    6小时前
    10

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信