1.GUI(Graphical User Interface 图形用户界面)
所谓GUI 指的是在计算机中采用图形方式展示用户的界面
在GUI之前采用的是字符界面
有了GUI之后 采用的则是图形界面
2.Java的GUI编程方案
常见的有四种
3.Swing
1.实现一个窗口
public class Main{
public static void main(String[] args) throws IOException, ClassNotFoundException {
// 首先创建一个窗口 并且命名
JFrame frame = new JFrame("第一个窗口");
// 设置窗口的大小和位置
frame.setBounds(300, 300, 400, 400);
// 设置窗口关闭以后程序就退出
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
// 设置窗口可见性
frame.setVisible(true);
}
}
2.Swing的常用组件
Swing提供了很多常用的组件 其中紫色的组件位于java.awt包中 绿色的组件位于javax.swing包中
以下是swing中常用的组件预览
接下来我们利用这些组件实现一个小案例:
就是实现以下简单的加法运算 而且要对不合理的输入触发反应
public class MyFrame extends JFrame {
// 定义一个构造方法
public MyFrame(){
// 调用父类的构造方法创建一个窗口
super("计算窗口");
// 设置窗口的位置和大小
setBounds(400, 400, 700, 400);
// 设置窗口的关闭后的默认操作 即程序退出
setDefaultCloseOperation(EXIT_ON_CLOSE);
// 接着我们设置一下窗口的布局方式为流式布局 是从左到右、从上到下进行布局的 可以设置水平间隔和竖直间隔
setLayout(new FlowLayout(FlowLayout.LEFT, 20, 20));
// 我们可以设置一个字体 去控制之后的字体大小
Font font = new Font("微软雅黑", Font.PLAIN, 18);
// 接着我们首先添加第一个加数的文本域
JTextField tf1 = new JTextField(10);
tf1.setFont(font);
add(tf1);
// 接着我们添加加号所在的文本标签
JLabel addLabel = new JLabel("+");
addLabel.setFont(font);
add(addLabel);
// 接着我们添加第二个加数的文本域
JTextField tf2 = new JTextField(10);
tf2.setFont(font);
add(tf2);
// 接着我们添加等号所在的文本标签
JLabel equalLabel = new JLabel("=");
equalLabel.setFont(font);
add(equalLabel);
// 接着我们添加结果所在的文本标签
JLabel resultLabel = new JLabel();
resultLabel.setFont(font);
resultLabel.setText("?");
add(resultLabel);
// 接着我们添加一个计算的按钮
JButton button = new JButton();
button.setFont(font);
button.setText("计算");
add(button);
// 为计算按钮添加监听器
button.addActionListener((e) -> {
try {
int result = Integer.parseInt(tf1.getText()) + Integer.parseInt(tf2.getText());
resultLabel.setText(result + "");
}catch(Exception a){
int w = 500;
int h = 100;
int x = this.getX() + ((this.getWidth() - w) >> 1);
int y = this.getY() + ((this.getHeight() - h) >> 1);
// 弹出一个警告窗口 设置弹出以后父窗口就不可以执行点击操作了
JDialog dialog = new JDialog(this, true);
dialog.setTitle("警告");
dialog.setBounds(x, y, w, h);
// 还得提示一下输入正确的值
JLabel label = new JLabel("请输入正确的整数!!!");
label.setFont(font);
dialog.add(label);
dialog.setVisible(true);
}
});
}
}
public class Main{
public static void main(String[] args) throws IOException, ClassNotFoundException {
// 展示窗口以及一些组件
new MyFrame().setVisible(true);
}
}