Java实现简易界面通讯录

 更新时间:2022年04月26日 11:13:43   作者:Jivan2233  
这篇文章主要为大家详细介绍了Java实现简易界面通讯录,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

前言

这个也是Java实验课程的一个作业,和Java实现简单的图形界面计算器一起做的,因为以前没有做过GUI编程,所以做的非常简陋,还有很多BUG,但是感觉当个作业也够了。

程序功能和截图

这里的添加是直接添加到文件中,为什么不用数据库呢?因为我们老师根本就没教,所以也不能用.。

通过输入的名字在文件中查找是否有该用户,如果用,就显示到界面上。

大致的功能就是上面两个。

代码

一、文件读写工具

package Contacts;

import java.io.*;

/**
 * Created by Yifan Jia on 2018/6/10.
 */
public class FileRW {
    private static FileWriter fileWriter;

    private static FileReader fileReader;

    private static BufferedReader bf;

    private static BufferedWriter bw;

    private static File file = new File("D:\\dest.txt");
    public static void fileWrite(String s) {
        try {
            fileWriter = new FileWriter(file, true);
            bw = new BufferedWriter(fileWriter);
            bw.write(s);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                bw.close();
                fileWriter.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    public static String fileRead(String dest) {
        try {
            fileReader = new FileReader(file);
            bf = new BufferedReader(fileReader);
            String ss;
            while((ss = bf.readLine()) != null) {
                String[] temp = ss.split(",");
                if(temp[0].equals(dest)) {
                    return ss;
                }
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                bf.close();
                fileReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }
}

二、界面程序

package Contacts;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

//定义自已的MyPanel,用于实现画图
class MyPanelone extends JPanel {
    private String ss;
    private int x;
    private int y;
    private int size;

    public MyPanelone(String ss, int x, int y, int size) {
        this.ss = ss;
        this.x = x;
        this.y = y;
        this.size = size;
    }

    //覆盖JPanel的paint方法
    @Override
    public void paint(Graphics g) {
        super.paint(g);
        g.setColor(Color.BLACK);
        g.setFont(new Font("宋体", Font.BOLD, size));
        g.drawString(ss, x, y);
    }
}

public class MyContacts extends JFrame{
    private MyPanelone myPaneone;
    private JPanel[] jPanels = new JPanel[7];
    private JButton[] jButtons = new JButton[4];
    private JTextField[] jTextFields = new JTextField[6];
    private JLabel[] jLabels = new JLabel[6];
    private String[] texts = new String[6];

    private class MyActionListener implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            boolean flag = true;
            StringBuilder s = new StringBuilder();
            String actionCommand = e.getActionCommand();
            if(actionCommand == "添加") {
                for (int i = 0; i < 6; i++) {
                    texts[i] = new String();
                    texts[i] = jTextFields[i].getText();
                    //System.out.println(texts[i]);
                    if(texts[i].equals("") || texts[i] == null) {
                        flag = false;
                        break;
                    }
                    if(i == 0) {
                        s.append(texts[i]);
                    }
                    else {
                        s.append(",").append(texts[i]);
                    }
                }
                if(flag) {
                    s.append("\n");
                    //将文本域中的内容写成一个字符串
                    String ss = s.toString();
                    //将字符串写入文件
                    FileRW.fileWrite(ss);
                    for(int i=0;i<6;i++) {
                        jTextFields[i].setText("");
                    }
                    //System.out.println(ss);
                    JFrame jFrame = new JFrame();
                    jFrame.setBounds(500, 300, 300, 300);
                    MyPanelone myPanelone = new MyPanelone("添加成功", 100, 100, 20);
                    jFrame.add(myPanelone);
                    jFrame.addWindowListener(new WindowAdapter() {
                        @Override
                        public void windowClosing(WindowEvent e) {
                            e.getWindow().dispose();
                        }
                    });
                    jFrame.setVisible(true);
                }
                else {
                    JFrame jFrame = new JFrame();
                    jFrame.setBounds(500, 300, 300, 300);
                    MyPanelone myPanelone = new MyPanelone("请把所有内容都填写完整", 60, 100, 15);
                    jFrame.add(myPanelone);
                    jFrame.addWindowListener(new WindowAdapter() {
                        @Override
                        public void windowClosing(WindowEvent e) {
                            e.getWindow().dispose();
                        }
                    });
                    jFrame.setVisible(true);
                }


            }
            else if(actionCommand == "清空") {
                for(int i=0;i<6;i++) {
                    jTextFields[i].setText("");
                }
            }
            else if(actionCommand == "退出") {
                System.exit(0);
            }
            else if(actionCommand == "查找") {
                JFrame frame = new JFrame("输入");

                JPanel jPanel = new JPanel();
                JPanel jPanel1 = new JPanel();
                JLabel jLabel = new JLabel("输入查找人的名字");
                JButton jButton = new JButton("确定");
                JTextField jTextField = new JTextField(30);
                jPanel.add(jLabel);
                jPanel.add(jTextField);
                jButton.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        String actionCommand1 = e.getActionCommand();
                        String dest = jTextField.getText();
                        String findresult = FileRW.fileRead(dest);
                        if(findresult == null) {
                            for(int i=0;i<6;i++) {
                                jTextFields[i].setText("");
                            }
                            JFrame jFrame = new JFrame();
                            jFrame.setBounds(500, 300, 300, 300);
                            MyPanelone myPanelone = new MyPanelone("未找到该用户", 100, 100, 20);
                            jFrame.add(myPanelone);
                            jFrame.addWindowListener(new WindowAdapter() {
                                @Override
                                public void windowClosing(WindowEvent e) {
                                    e.getWindow().dispose();
                                }
                            });
                            jFrame.setVisible(true);
                            frame.dispose();
                        }
                        else {
                            String[] tempdest = findresult.split(",");
                            for(int i=0;i<6;i++) {
                                jTextFields[i].setText(tempdest[i]);
                            }
                            frame.dispose();
                        }

                    }
                });
                jPanel1.add(jButton);
                frame.add(jPanel, BorderLayout.CENTER);
                frame.add(jPanel1, BorderLayout.SOUTH);
                frame.setBounds(500, 300, 400, 300);
                frame.addWindowListener(new WindowAdapter() {
                    @Override
                    public void windowClosing(WindowEvent e) {
                        e.getWindow().dispose();
                    }
                });
                frame.setVisible(true);
            }
        }
    }

    MyContacts() {
        myPaneone = new MyPanelone("communication", 250, 60, 60);
        //myPaneone.setSize(1000, 150);
        this.add(myPaneone);
        for(int i=0;i<7;i++) {
            jPanels[i] = new JPanel();
        }

        jLabels[0] = new JLabel("姓名");
        jLabels[1] = new JLabel("邮政编码");
        jLabels[2] = new JLabel("通信地址");
        jLabels[3] = new JLabel("电话");
        jLabels[4] = new JLabel("手机");
        jLabels[5] = new JLabel("电子邮件");

        jButtons[0] = new JButton("添加");
        jButtons[1] = new JButton("查找");
        jButtons[2] = new JButton("清空");
        jButtons[3] = new JButton("退出");

        for(int i=0;i<6;i++) {
            jTextFields[i] = new JTextField(50);
        }

        //设置布局管理
        this.setLayout(new GridLayout(8, 1));

        //加入各个组件
        for(int i=0;i<6;i++) {
            jPanels[i].add(jLabels[i]);
            jPanels[i].add(jTextFields[i]);
            this.add(jPanels[i]);
        }
        for(int i=0;i<4;i++) {
            jButtons[i].addActionListener(new MyActionListener());
            jPanels[6].add(jButtons[i]);
        }
        this.add(jPanels[6]);
    }

    public static void main(String[] args) {
        JFrame f = new MyContacts();
        f.setTitle(f.getClass().getSimpleName());
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setBounds(400, 200, 1000, 600);
        f.setVisible(true);
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Spring Cloud 部署时使用 Kubernetes 作为注册中心和配置中心的方法

    Spring Cloud 部署时使用 Kubernetes 作为注册中心和配置中

    Spring Cloud Kubernetes提供了使用Kubernete本地服务的Spring Cloud通用接口实现,这篇文章主要介绍了Spring Cloud 部署时如何使用 Kubernetes 作为注册中心和配置中心,需要的朋友可以参考下
    2024-05-05
  • Spring Cloud Alibaba Nacos Config配置中心实现

    Spring Cloud Alibaba Nacos Config配置中心实现

    这篇文章主要介绍了Spring Cloud Alibaba Nacos Config配置中心实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Spring Cloud服务入口Gateway的介绍和使用问题小结

    Spring Cloud服务入口Gateway的介绍和使用问题小结

    Spring Cloud Gateway是Spring Cloud的⼀个全新的API⽹关项⽬, 基于Spring + SpringBoot等技术开发, ⽬的是为了替换掉Zuul,这篇文章主要介绍了Spring Cloud服务入口Gateway的介绍和使用问题小结,需要的朋友可以参考下
    2025-03-03
  • Idea使用插件实现逆向工程搭建SpringBoot项目的图文教程

    Idea使用插件实现逆向工程搭建SpringBoot项目的图文教程

    这篇文章主要介绍了Idea使用插件实现逆向工程搭建SpringBoot项目,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • SpringBoot-Admin实现微服务监控+健康检查+钉钉告警

    SpringBoot-Admin实现微服务监控+健康检查+钉钉告警

    本文主要介绍了SpringBoot-Admin实现微服务监控+健康检查+钉钉告警,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • Java反射机制如何解决数据传值为空的问题

    Java反射机制如何解决数据传值为空的问题

    这篇文章主要介绍了Java反射机制如何解决数据传值为空的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • 使用Spring Security和JWT实现安全认证机制

    使用Spring Security和JWT实现安全认证机制

    在现代 Web 应用中,安全认证和授权是保障数据安全和用户隐私的核心机制,Spring Security 是 Spring 框架下专为安全设计的模块,具有高度的可配置性和扩展性,而 JWT则是当前流行的认证解决方案,所以本文介绍了如何使用Spring Security和JWT实现安全认证机制
    2024-11-11
  • Java中的Kotlin 内部类原理

    Java中的Kotlin 内部类原理

    这篇文章主要介绍了Java中的Kotlin 内部类原理,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下
    2022-06-06
  • 微服务通过Feign调用进行密码安全认证操作

    微服务通过Feign调用进行密码安全认证操作

    这篇文章主要介绍了微服务通过Feign调用进行密码安全认证操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • 浅谈hibernate之映射文件VS映射注解

    浅谈hibernate之映射文件VS映射注解

    下面小编就为大家带来一篇浅谈hibernate之映射文件VS映射注解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07

最新评论