admin管理员组文章数量:1442037
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);
}
}
看下运行效果
本文标签: java图形用户界面
版权声明:本文标题:java图形用户界面 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1747978561a2786044.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论