没有收到回复的同学注意了,用它一键查询!

Posted 卉卉今天吃什么

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了没有收到回复的同学注意了,用它一键查询!相关的知识,希望对你有一定的参考价值。

文章目录

今天周六,起床打开Timi,辅导员就发来消息

妈呀,我的天!

虽是小工程,但想到要看着两个白花花的名单一个个找…我的两只眼睛就先痛为敬了。

哎?刚学了Java IO,我想能不能实现用程序帮我找出来呢?

这样的琐事以后肯定还有很多,废话不多说,说干就干!!

于是乎,我答应了。

大脑飞速旋转,打开idea写了这个查找没有收到回复的小demo,大致如下:

把信息都放到对应好的路径后运行:
查找成功!!!

我赶忙告诉中队,跟他炫耀一波我的小机灵!

谁想到他却让我发给他??

正当我刚要把代码copy给他的时候,仔细一想,不对,不可以!

在这个提倡知识付费的时代,代码不可以随便给啊

这不就便宜他了?

JFrame实践

(正文)

首先,创建一个主类,继承JFrame

public class myApp extends JFrame {
    
}

在里面写上它的构造方法(这是我们的主阵地)

    public myApp(){
        
    }

获得一个JFrame窗体

JFrame c = new JFrame("Get the guys out !");

设置窗体流布局

c.setLayout(new FlowLayout(FlowLayout.LEFT));

设置窗体打开位置(前2个参数),窗体宽高(后2个参数)

c.setBounds(100, 100, 260, 200);// 下图描述各个参数的含义

添加2个提示标签(如上图)

JLabel bq1 = new JLabel("班级名单路径 (例如:d:/名单.txt)");
JLabel bq2 = new JLabel("待查文本粘贴处");

添加3个文本域JTextField(参数为框框长度)

JTextField text1 = new JTextField(20);
JTextField text2 = new JTextField(20);
JTextField text3 = new JTextField(20);


添加按钮,并为其添加监听事件(即按钮按下时,触发函数)

JButton button = new JButton("Get");
button.addActionListener(new ActionListener() {
     @Override
     public void actionPerformed(ActionEvent e) {
          try {
               searchAbsentPerson(text1, text2, text3);
          } catch (IOException ioException) {
               ioException.printStackTrace();
          }
     }
});

按顺序添加所有的组件到窗口中

        c.add(bq1);
        c.add(text1);
        c.add(bq2);
        c.add(text2);
        c.add(button);
        c.add(text3);

设置窗体可见

c.setVisible(true);

设置默认关闭方式(不设置可以关闭窗口,但进程不会关闭)

c.setDefaultCloseOperation(EXIT_ON_CLOSE);

然后按照一开始的demo完成searchAbsentPerson函数

    public static void searchAbsentPerson(JTextField text1, JTextField text2, JTextField text3) throws IOException {
        // 以缓存流的方式打开完整名单
        File file = new File(text1.getText());
        Reader input = new FileReader(file);
        BufferedReader in = new BufferedReader(input);

        StringBuilder ans = new StringBuilder("");
        String name = new String();
        // 按完整名单的顺序读取名字,并依次在待查文本中查找
        while ((name = in.readLine()) != null){
            // 用indexOf查找,返回值为-1,即此人缺席(没有收到回复)
            if (text2.getText().indexOf(name) == -1) {
                ans.append(name + " ");
            }
        }
        // 在第三个文本域中打印查找结果
        text3.setText(ans.toString());
    }

最后我们写上启动类

    public static void main(String[] args) {
        new myApp();
    }

大功告成!!看看效果!!

其实第一次Get的时候我乱码了,把txt名单的编码格式改成了ANSI就可以了

接下来就是打包的事情了 (完整代码在文末,求好兄弟的一个三连!!)


打包


我用的是IDEA2020.3的版本,首先在File里找到Project Structure

在Artifacts里,点左上角的 + 号

JAR -> From modules with dependencies…,然后选择主类(myApp)



然后,我们可以把名字改成我们喜欢的名字,导出路径也可以修改

回到主界面,点导航栏的Build,再点里面的Build Artifacts

弹出框框,选择Build即可

然后在设置好的路径找到jar,双击就可以运行啦!


大摇大摆发给了辅导员


同学知道后






文末(完整源码)

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;

public class myApp extends JFrame {
    public static void searchAbsentPerson(JTextField text1, JTextField text2, JTextField text3) throws IOException {
        // 以缓存流的方式打开完整名单
        File file = new File(text1.getText());
        Reader input = new FileReader(file);
        BufferedReader in = new BufferedReader(input);

        StringBuilder ans = new StringBuilder("");
        String name = new String();
        // 按完整名单的顺序读取名字,并依次在待查文本中查找
        while ((name = in.readLine()) != null){
            // 用indexOf查找,返回值为-1,即此人缺席(没有收到回复)
            if (text2.getText().indexOf(name) == -1) {
                ans.append(name + " ");
            }
        }
        // 在第三个文本域中打印查找结果
        text3.setText(ans.toString());
    }


    public myApp(){
        JFrame c = new JFrame("Get the guys out !");
        c.setLayout(new FlowLayout(FlowLayout.LEFT));
        c.setBounds(100, 100, 260, 200);
        JLabel bq1 = new JLabel("班级名单路径 (例如:d:/名单.txt)");
        JLabel bq2 = new JLabel("待查文本粘贴处");
        JTextField text1 = new JTextField(20);
        JTextField text2 = new JTextField(20);
        JTextField text3 = new JTextField(20);
        JButton button = new JButton("Get");
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                try {
                    searchAbsentPerson(text1, text2, text3);
                } catch (IOException ioException) {
                    ioException.printStackTrace();
                }
            }
        });
        c.add(bq1);
        c.add(text1);
        c.add(bq2);
        c.add(text2);
        c.add(button);
        c.add(text3);
        c.setVisible(true);
        c.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        new myApp();
    }
}

END

以上是关于没有收到回复的同学注意了,用它一键查询!的主要内容,如果未能解决你的问题,请参考以下文章

c#代码片段快速构建代码

一大清早,辅导员让我查一下群里没收到回复的,于是乎用JFrame写了这个软件,惊讶全班同学

985大学的高材生只会写代码片段,丢人吗?

985高校的高材生只会写代码片段,丢人吗?

985大学的高材生只会写代码片段,丢人吗?

985大学的高材生只会写代码片段,丢人吗?