Java实现简易界面通讯录
作者:Jivan2233 发布时间:2023-02-09 20:12:59
标签: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);
}
}
来源:https://blog.csdn.net/q982151756/article/details/80647801


猜你喜欢
- 说到导出 Excel,我们首先会想到 poi、jsxl 等,使用这些工具会显得笨重,学习难度大。今天学习使用 JeecgBoot 中的 Au
- JAVA中去掉空格 1. String.trim() trim()是去掉首尾空格 2.str
- 本文实例讲述了Android游戏开发学习①弹跳小球实现方法。分享给大家供大家参考。具体如下:在学习了一点点Android之后,觉得有必要记录
- Canvas绘制文本时,使用FontMetrics对象,计算位置的坐标。public static class FontMetrics {
- 采取的方法是Fragment+FragmentTabHost组件来实现这种常见的app主页面的效果首先给出main.xml文件
- 在需要线程同步的时候如何选择合适的线程锁?例:选择可以存入到常量池当中的对象,String对象等public class SyncTest{
- 本文实例为大家分享了C语言运用函数指针数组制作计算器的具体代码,供大家参考,具体内容如下先来回顾一下概念:指针数组 —— 存放指针的数组函数
- 本文实例展示了DevExpress获取TreeList可视区域节点集合的实现方法,是比较有实用价值的技巧。分享给大家供大家参考。具体实现方法
- 引言JVM进程消失可能有哪些原因?这个问题也是面试中经常出现的,如下图所示ps:由于两年多没写crud了,所以忘记mybatis怎么用了,所
- 1、mybatis-plus @DS实现动态切换数据源原理首先mybatis-plus使用com.baomidou.dynamic.data
- 前面写过了使用ViewFlipper和ViewPager实现屏幕中视图切换的效果(ViewPager未实现轮播)附链接:ANDROID中使用
- 前言:$是c# 6.0 的语言特性,功能类似string.format(),更方便的地方在于不要像format一样使用索引,可以直接使用变量
- 前情提要:本demo是基于springboot+mybatis-plus实现加密,加密为主,全局异常处理,日志处理为辅,而登录密码加密是每个
- 问题描述1.可以访问同一个文件夹下面的success.jsp文件,如图:2、却不能访问同一个文件夹下面的 index.html文件,如图:问
- 本文实例为大家分享了Java NIO实现多人聊天室的具体代码,供大家参考,具体内容如下1. 服务器端代码ChatServer类:packag
- 如下所示: /** * 判断某个界面是否在前台 * * @param context
- checkbox控件时导致Activity启动默认不显示输入法。网上很多资料说要放一个空的Linearlayout,完全是在误导大众,正确的
- springboot部署项目在linux的两种方式 可以选择 war包方式或者jar包方式(个人推荐使用jar方式)1.springboot
- 动态SQL简介动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQ
- 介绍建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一种