最近在项目上用到JAVA GUI,虽然说这个东西有点旧,但是相信做JAVA的小伙伴初学的时候都接触过它,用来做一些小工具还是可以的,下面将对GUI图形化界面做一个总结。
1. GUI的介绍
1.1 GUI概述
早期,电脑向用户提供的是单调、枯燥、纯字符状态的“命令行界面(CLI)”。就是到现在,我们还可以依稀看到它们的身影:在Windows中开个DOS窗口,就可看到历史的足迹。后来,Apple公司率先在电脑的操作系统中实现了图形化的用户界面(Graphical User Interface,简称GUI),但由于Apple公司封闭的市场策略,自己完成电脑硬件、操作系统、应用软件一条龙的产品,与其它PC不兼容。这使得Apple公司错过了一次一统全球PC的好机会。
后来,Microsoft公司推出了风靡全球的Windows操作系统,它凭借着优秀的图形化用户界面,一举奠定了操作系统标准的地位。这也造就了世界首富—比尔.盖茨和IT业的泰山北斗微软公司。
在这图形用户界面风行于世的今天,一个应用软件没有良好的GUI是无法让用户接受的。而Java语言也深知这一点的重要性,它提供了一套可以轻松构建GUI的工具。
1.2Java提供了三个主要包做GUI开发:
java.awt 包 – 主要提供字体/布局管理器
javax.swing 包[商业开发常用] – 主要提供各种组件(窗口/按钮/文本框)
java.awt.event 包 – 事件处理,后台功能的实现。
2. Swing组件
如图所示:swing组件主要可分为三个部分,后面会详细介绍
(1)顶层容器::常用有JFrame,JDialog
(2)中间容器:JPanel,JOptionPane,JScrollPane,JLayeredPane 等,主要以panel结尾。
(3)基本组件:JLabel,JButton,JTextField,JPasswordField,JRadioButton 等。
2.1 顶层容器介绍
2.2 中间容器
2.3 基本组件
3. API介绍
3.1Jframe组件
3.2 Panel组件
3.3 功能组件
4. 用JAVA GUI做一个CSV文件校验小工具
4.1 引入CSV校验依赖
<dependency>
<groupId>net.sourceforge.javacsv</groupId>
<artifactId>javacsv</artifactId>
<version>2.0</version>
</dependency>
4.2 编写启动类
public class JavaCsvApplication {
public static void main(String[] args) {
new CsvValidateGui();
}
}
4.3 编写CSV校验类
public class CsvValidateService {
public static String validate(String path){
String filePath = path;
String alertMessage = "success";
List<String> list = new ArrayList<>();
List<String> list1 = new ArrayList<>();
//Validate same group setting same source port
try {
CsvReader csvReader = new CsvReader(filePath);
csvReader.readHeaders();
while (csvReader.readRecord()){
if (csvReader.get("Destination").contains("*")){
list.add(csvReader.get("NLB-Group"));
}
}
System.out.println(list);
} catch (IOException e) {
e.printStackTrace();
}
try {
CsvReader csvReader = new CsvReader(filePath);
csvReader.readHeaders();
while (csvReader.readRecord()){
if (!list.contains(csvReader.get("NLB-Group"))){
list1.add(csvReader.get("NLB-Group").concat(csvReader.get("source port")));
}
}
System.out.println(list1);
} catch (IOException e) {
e.printStackTrace();
}
for (int i = 0; i<list1.size(); i++) {
for (int j= i+1; j < list1.size(); j++) {
if (list1.get(i).equals(list1.get(j))) {
alertMessage = "You are setting same source port in same group";
System.out.println("same source port"+list1.get(i));
}
}
}
return alertMessage;
}
}
4.4 编写GUI图形化界面
public class CsvValidateGui {
public static JFrame jFrame;
public JTextArea textArea;
public CsvValidateGui(){
jFrame = new JFrame();
jFrame.setTitle("NLB CSV VERIFICATION");
jFrame.setBounds(600, 300, 500, 400);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
jFrame.getContentPane().add(panel, BorderLayout.NORTH);
JButton button = new JButton("Select File");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JFileChooser jfc = new JFileChooser();
jfc.showSaveDialog(jFrame);
try{
File file = jfc.getSelectedFile();
String content = CsvValidateService.validate(file.toString());
textArea.setText(content);
if("success".equals(content)){
JOptionPane.showMessageDialog(null, "Congratulation to you that passed nlb validation");
}else{
JOptionPane.showMessageDialog(null, content, "Verification failed", JOptionPane.ERROR_MESSAGE);
}
} catch (Exception e2){
JOptionPane.showMessageDialog(null, "Not select any file", "Notice", JOptionPane.WARNING_MESSAGE);
}
}
});
panel.add(button);
JScrollPane scrollPane = new JScrollPane();
jFrame.getContentPane().add(scrollPane, BorderLayout.CENTER);
textArea = new JTextArea();
scrollPane.setViewportView(textArea);
jFrame.setVisible(true);
}
}
4.5 实现效果
4.6 Source Code
https://gitee.com/qiugantao/java-spring-quick-start/tree/master/java-csv