[java]swing窗口演示 集合对象序列化 保存与读取-纯小白文

时间:2020-06-24作者:klpeng分类:IT综合浏览:552评论:0

集合对象序列化 保存


首先这里拿一个javaswing 的窗口举例子

[java]swing窗口演示 集合对象序列化 保存与读取-纯小白文
首先这个窗口有两个按钮,一个是添加,一个是保存,这个需要添加之后才能进行数据的保存,否则会提示无新添加数据。这里我就只完成数据的保存和读取就好了

保存

  • 创建一个集合对象User
import java.io.Serializable;

public class User implements Serializable{
	private int id;
	private String name;
	private String pass;
	private String sex;
	private String hobby;

	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", pass=" + pass + ", sex=" + sex + ", hobby=" + hobby + "]";
	}
	public User() {
		// TODO Auto-generated constructor stub

	}

	public User(int id, String name, String pass, String sex, String Hobby) {
		// TODO Auto-generated constructor stub
		this.id = id;
		this.name = name;
		this.pass = pass;
		this.sex = sex;
		this.hobby = Hobby;

	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPass() {
		return pass;
	}

	public void setPass(String pass) {
		this.pass = pass;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public String getHobby() {
		return hobby;
	}

	public void setHobby(String hobby) {
		this.hobby = hobby;
	}

}

  • 然后开始写添加按钮的事件
//因为需要添加点击保存之后才能保存,所以把集合对象和ArrayList写成全局
User user = null;
ArrayList<User> userList =  new ArrayList<User>();;
int id = 0;//设置用户id
int addid = 0;//判断有没有用户被添加
  • 添加按钮事件
    这里还需要判空处理,就不写完了
    String Interest = "无";  //复选框默认属性
		if(ck1.getState()) {
			Interest = ck1.getLabel();
			if(ck2.getState()) {
				Interest = Interest+"\t"+ck2.getLabel();//判断复选框被选择了1还是2吗,如果选择了1再次判断2是否有被选择
			}
		}else if(ck2.getState()) {
			Interest = ck2.getLabel();
		}
		userList.add(new User(id,txt1.getText(),txt2.getText(),rdbut1.isSelected()?rdbut1.getText():rdbut2.getText(),Interest));
		//以为单选框只有两个值,所以这里简写了if判断
	id++ ;//这里用户是用户id
	addid++;//这里是判断有没有添加新用户
		
  • 保存按钮事件
//判断有没有添加用户
     if(addid==0) {
		JOptionPane.showMessageDialog(this,"请先添加账号!!", "提示",JOptionPane.YES_NO_OPTION);
		}else{
			ObjectOutputStream oo = new ObjectOutputStream(new FileOutputStream(new File("D:/heimao.bin")));
			oo.writeObject(userList);
			oo.close();
			JOptionPane.showMessageDialog(this,"保存成功", "提示",JOptionPane.YES_NO_CANCEL_OPTION);
			addid = 0;//保存成功后重置,避免重复保存
		}

读取

  • 创建一个ObjIo方法
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.ArrayList;

import javax.swing.JOptionPane;

public class ObjIo {

	void shuchu() throws IOException, ClassNotFoundException {
		System.out.println("↓↓↓↓最新添加↓↓↓↓");
		// TODO Auto-generated method stub
		ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File("D:/heimao.bin")));
		@SuppressWarnings("unchecked")
		ArrayList<User> person = (ArrayList<User>) ois.readObject();
		for (User user : person) {
		//遍历输出所有数据
			System.err.println(user);
		}
		ois.close();
	}
}
  • 调用方法
ObjIo put = new ObjIo();
put.shuchu();

javaswing编写的一个简单得登陆注册界面,本人大一生,刚接触java一个学期,里面是个人对java对象序列化的理解,如果你有更加的优化方式或者有什么问题我们可以共同学习哦❥(^_-)
完整源码下载链接:点击下载
ps:源码内有个JLabel标签变量错了,将Lab3改成Lab4即可

打赏
文章版权声明:除非注明,否则均为彭超的博客原创文章,转载或复制请以超链接形式并注明出处。
相关推荐

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

猜你喜欢