很抱歉让你们烦恼但是我的程序遇到了另一个问题。我无法保存新创建的复选框而不会出现多个错误。基本上,我这样做,所以每当你输入你想要命名的任何内容时,程序都会生成一个新的复选框,但我添加的保存按钮并没有按预期保存程序。我想保存列表,并且能够在需要时返回并修改它。
以下是有问题的部分让我很难过。抱歉格式不佳。
这主要来自较旧的帖子,如果向下滚动,您会看到保存代码。
package appchecklist;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Scanner;
import javax.swing.*;
public class List {
public JPanel panel = new JPanel();
Scanner input = new Scanner(System.in);
public List() {
JButton button = new JButton("Add checkbox");
JButton save = new JButton("Save program");
JButton load = new JButton("load program");
panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
panel.add(new JCheckBox(input.nextLine()));
if (input == null) {
System.out.println("Please enter a name for a checkbox");
}
panel.revalidate();
panel.repaint();
SwingUtilities.windowForComponent(panel).pack();
}
});
save.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
new SaveButton();
}
});
load.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
new Loadbutton();
}
});
panel.add(button);
panel.add(save);
panel.add(load);
}
}
}
package appchecklist;
import java.io.*;
public class SaveButton{
public SaveButton() {
List savedata = new List();
try {
FileOutputStream saveFile = new FileOutputStream("Checklist.java");
ObjectOutputStream save = new ObjectOutputStream(saveFile);
save.writeObject(savedata);
save.close();
} catch (Exception exc){ exc.printStackTrace(); }
}
}
答案 0 :(得分:0)
您的List类不可序列化。只需改变
public class List {
到
public class List implements Serializable{
有关详细信息,请参阅documentation on Serializable。可以自定义序列化。
答案 1 :(得分:0)
感谢您的帮助,我将保存部分添加到List类的顶部。对于其他任何人,此更改导致程序的保存部分出现零错误。我仍然需要修理装载部件。
public class List implements Serializable {
public JPanel panel = new JPanel();
Scanner input = new Scanner(System.in);
private void writeObject(java.io.ObjectOutputStream out)
throws IOException {
}
private void readObject(java.io.ObjectInputStream in)
throws IOException, ClassNotFoundException {
}
private void readObjectNoData()
throws ObjectStreamException {
}