Java学习笔记-Day41 Java GUI
- 一、GUI 图形化用户接口
- 二、Swing的简介
- 三、Swing的使用
- 1、安装windowBuilder插件
- 2、新建Application Window文件
一、GUI 图形化用户接口
GUI(图形化用户接口)是和用户进行交互的、可视化的界面。
Java 中编写 GUI 有两种工具包,分别为 AWT 和 Swing。
Swing 是 AWT 的拓展,具有比 AWT 更加丰富的组件和方法。AWT 和 Swing 都能跨平台使用。AWT 会随着不同的系统平台,UI 样式会有所变化。而 Swing 设计完毕后在所有平台下样式一致。
二、Swing的简介
Swing 是一个为Java设计的GUI工具包,是JAVA的基础类,其包括了 GUI 器件,如:按钮、文本框、分隔窗格、表等等。
Swing 提供许多比 AWT 更好的屏幕显示元素。它们都是用纯Java写成的,所以和 Java 一样都是可以跨平台运行。它们支持可更换的面板和主题(各种操作系统都有其默认的特有主题),Swing 的屏幕显示元素不是真的使用原生平台提供的设备,而是仅仅在表面上模仿它们。这意味着可以在任意平台上使用 JAVA 支持的任意面板。
轻量级组件的优点是可以在所有平台上采用统一的行为,缺点则是执行速度较慢。
三、Swing的使用
想要使用在Eclipse中使用Swing的话,需要安装windowBuilder插件。
1、安装windowBuilder插件
1、下载 windowBuilder.rar 文件,解压这个文件后,会得到如下两个文件:
2、复制 links 文件夹到 eclipse 的根目录。
3、将WindowBuilder_v1.5的文件夹放在任意目录下,我是放在 D:\develop\WindowBuilder_v1.5
路径下。
4、修改 links 文件夹中的 windowBuilderPlugin.link 文件,将该文件中的 path 值修改为 windowBuilder 插件的目录。
5、重新启动 eclipse 软件。
2、新建Application Window文件
1、鼠标在项目右键,选择 New -> Other。
2、在文本框输入 win 进行搜索,将会出现 Application Window 选择,选择 Application Window,然后下一步。
3、输入包名和类名,点击完成。
4、创建完成后,如图所示:
5、点击打开创建的 LoginFrame.java 文件,点击 Design 切换,就可以使用拖拉的方法设计界面。
- 添加组件后的LoginFrame.java文件代码
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import com.etc.os.dao.UserDao;
import com.etc.os.entity.User;
public class LoginFrame {
private JFrame frame;
private JTextField txtName;
private JPasswordField txtPwd;
/**
* 程序入口
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
//实例化LoginFrame(登录窗口)
LoginFrame window = new LoginFrame();
//设置frame可见
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* 构造方法
*/
public LoginFrame() {
//初始化内容面板
initialize();
}
/**
* 初始化内容面板
*/
private void initialize() {
// 实例化JFrame(窗体)
frame = new JFrame();
// 调用JFrame的setBounds方法,设置frame的位置、长度和高度
frame.setBounds(100, 100, 450, 300);
// 设置用户在此窗体上发起 "close"时默认执行的操作
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// frame.getContentPane():获取frame的container(内容面板)
// setLayout(null):null表示绝对布局
frame.getContentPane().setLayout(null);
// 实例化JTextField(文本框)
txtName = new JTextField();
// 设置textField的位置、长度和高度
txtName.setBounds(144, 57, 177, 21);
// 将某个组件(一般都是组件类的子类) 添加到内容面板上来
frame.getContentPane().add(txtName);
// 设置此文本字段中的列数。列是近似平均字符宽度,它与平台有关,
// 参数columns和JTextField在某些布局下的显示宽度相关,
// 就是设宽度,每个单位宽度等于当前字体下 'm' 字符的宽度,10 就是:10 * 这个单位宽度
txtName.setColumns(10);
txtPwd = new JPasswordField();
txtPwd.setBounds(144, 104, 177, 21);
frame.getContentPane().add(txtPwd);
JButton loginButton = new JButton("\u767B\u5F55");
//ActionListener:用于接收动作事件的侦听器界面
//addActionListener:添加一个 ActionListener
loginButton.addActionListener(new ActionListener() {
//actionPerformed:发生动作时调用
public void actionPerformed(ActionEvent e) {}
});
loginButton.setBounds(62, 169, 93, 21);
frame.getContentPane().add(loginButton);
JButton registerButton = new JButton("\u6CE8\u518C");
registerButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
RegisterFrame rf = new RegisterFrame();
rf.frame.setVisible(true);
}
});
registerButton.setBounds(191, 168, 93, 23);
frame.getContentPane().add(registerButton);
JLabel lblNewLabel_1 = new JLabel("\u5BC6\u7801\uFF1A");
lblNewLabel_1.setFont(new Font("微软雅黑", Font.PLAIN, 15));
lblNewLabel_1.setBounds(80, 106, 54, 15);
frame.getContentPane().add(lblNewLabel_1);
JLabel lblNewLabel = new JLabel("\u8D26\u53F7\uFF1A");
lblNewLabel.setFont(new Font("微软雅黑", Font.PLAIN, 15));
lblNewLabel.setBounds(80, 60, 54, 15);
frame.getContentPane().add(lblNewLabel);
JLabel lblNewLabel_2 = new JLabel("\u8BA2\u9910\u7CFB\u7EDF");
lblNewLabel_2.setFont(new Font("微软雅黑", Font.PLAIN, 20));
lblNewLabel_2.setBounds(171, 10, 102, 26);
frame.getContentPane().add(lblNewLabel_2);
JButton exitButton = new JButton("\u9000\u51FA");
exitButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
exitButton.setBounds(309, 168, 93, 23);
frame.getContentPane().add(exitButton);
}
}