用JAVA GUI做一个CSV文件校验小工具

本文介绍了Java GUI的基本概念,重点讲解了Swing组件的使用,包括顶层容器(JFrame和JDialog)、中间容器(JPanel)和基本组件(如JButton和JTextField)。并通过实例展示了如何用Swing创建一个CSV文件校验的小工具,结合javacsv库进行文件验证。
摘要由CSDN通过智能技术生成

最近在项目上用到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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值