GUI编程
【Java从0到架构师课程】笔记
GUI简介
GUI:图形用户界面,在计算机中采用图形的方式显示用户界面
java的GUI开发
- AWT:java最早推出的GUI编程开发包,界面风格跟随操作系统
- SWT:eclipse就是java使用SWT开发的
- Swing:在AWT的基础上扩充了功能,可以在不同操作系统重保持统一风格
- JavaFx:Java官方推出的新一代GUI编程开发包
第一个Swing窗口
java可以写用户界面,本质就是调用各种写好了的API
package swing;
import javax.swing.*;
public class Main {
public static void main(String[] args) {
//其实本质就是调用API
JFrame frame = new JFrame("我是一个窗口");
frame.setBounds(300, 300, 400, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
Swing的常用组件
编写MyFram
类
package swing;
import javax.swing.*;
import java.awt.*;
public class MyFrame extends JFrame {
public MyFrame(){
super("简单的计算窗口");
//其实本质就是调用API
setBounds(300, 300, 400, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 从左到右水平排列
setLayout(new FlowLayout(FlowLayout.LEFT, 20, 20));
Font font = new Font("微软雅黑", Font.PLAIN, 18);
// 文本输入框
JTextField tf1 = new JTextField(5);
tf1.setFont(font);
add(tf1);
//文本标签
JLabel addLabel = new JLabel("+");
addLabel.setFont(font);
add(addLabel);
// 文本输入框
JTextField tf2 = new JTextField(5);
tf1.setFont(font);
add(tf2);
//文本标签
JLabel equalLabel = new JLabel("=");
addLabel.setFont(font);
add(equalLabel);
//文本标签
JLabel resultLabel = new JLabel("?");
resultLabel.setFont(font);
add(resultLabel);
// 按钮
JButton btn = new JButton("计算");
btn.setFont(font);
//点击按钮,设置监听
btn.addActionListener((evt) ->{
try { //异常机制:防止不合理的输出导致程序崩溃的问题
int n1 = Integer.parseInt(tf1.getText());
int n2 = Integer.parseInt(tf2.getText());
resultLabel.setText(n1 + n2 + "");
} catch (Exception e){
int w = 300;
int h = 100;
int x = getX() + (getWidth() + w) >> 1;
int y = getY() + (getHeight() + h) >> 1;
JDialog dialog = new JDialog(this, true); // modal窗口的概念,弹出子窗口,父窗口不能再点击
dialog.setTitle("警告");
dialog.setBounds(x, y, w, h);
dialog.setResizable(false); //不能改变大小
JLabel label = new JLabel("请输入正确格式的整数");
label.setFont(font);
dialog.add(label);
dialog.setVisible(true);
}
});
add(btn);
}
}
在Main
中创建MyFram
对象,并执行显示方法
package swing;
import javax.swing.*;
import java.awt.*;
public class Main {
public static void main(String[] args) {
MyFrame myFrame = new MyFrame();
myFrame.setVisible(true);
}
}
效果展示
输入合法数据可以进行计算
输入不合法数字,按钮进行监听,给出警告,此外还有一些细节,弹出警告框之后,不能再点击父窗口,警告窗口不能改变大小
java程序的运行过程
.class文件
JAR
JAR ,全称Java Archive,使用ZIP文件格式来打包
将自己的代码分享给他人
- 直接分享.java文件,注意文件第一行导包路径问题(开源)
- 将相关的.class文件打包成一个.jar文件(其实就是一个压缩包)后分享出去(不开源)
- 可以对JAR包进行数字前面,防止内容被恶意篡改
idea中jar包的导出与导入
java导出jar包的步骤(本质是调用了JDK bin目录中的jar.exe)
File->Project Structure->artifacts->点击“+”按钮->JAR->“From modules with dependence”
然后点击OK
runable_jar
在Swing组件中写的计算器功能程序,现在想将其变成一个可执行文件,用户点击之后,就可以直接使用