Java 在另一个类中使用DefaultComboxModel时出现NotSerializableException
我正在做一个学校的大项目,项目快结束了。 我希望在我的程序中的不同类(JPanel)上同步2个JCombox,在不太了解JComponents如何工作之后,我发现保存数据的不是JCombox本身,而是ComboxModel 因此,在将DefaultComboxModel添加到我的寄存器(保存我所有数据的类)并将其共享给我的其他两个JPanel之后,它终于开始工作了 但是现在我在将Register类写入文件时得到了NotSerializable。(我已经将DefaultComboxModel从我的Register类中删除,并使所有内容恢复工作,所以我知道这就是问题所在) 从文档中可以看到,DefaultComboxModel实现了Serialiazble,模型中的对象也实现了SerialiazbleJava 在另一个类中使用DefaultComboxModel时出现NotSerializableException,java,notserializableexception,comboboxmodel,Java,Notserializableexception,Comboboxmodel,我正在做一个学校的大项目,项目快结束了。 我希望在我的程序中的不同类(JPanel)上同步2个JCombox,在不太了解JComponents如何工作之后,我发现保存数据的不是JCombox本身,而是ComboxModel 因此,在将DefaultComboxModel添加到我的寄存器(保存我所有数据的类)并将其共享给我的其他两个JPanel之后,它终于开始工作了 但是现在我在将Register类写入文件时得到了NotSerializable。(我已经将DefaultComboxModel从我的
public class Register implements Serializable
{
...
private DefaultComboBoxModel klippPriser;
public Register()
{
...
Object[] antTurer = { new KlippPris(5,0), new KlippPris(10,0.05), new KlippPris(15,0.10) };
klippPriser = new DefaultComboBoxModel(antTurer);
}
public DefaultComboBoxModel getKlippPriser()
{
return klippPriser;
}
我的猜测是,不可能使用DefaultComboxModel作为列表来存储对象并写入文件,但我真的不知道如何解决它并保持程序的动态性
我希望我把问题说清楚。谢谢
EDIT2:
模型持有的Klippris
类。(不是问题所在)
EDIT3:
发现问题不是寄存器中的,而是Salg
和Administrasjon
中的。
我真的不明白为什么
java(Administrasjon使用了类似的行。)
为什么会这样?我既没有在文件中写入Salg
或Administrasjon
,也没有在注册表中写入。
我还尝试了setModel()
,但没有成功
不确定异常是否意味着什么:
com.apple.laf.AquaComboBoxUI
Java v.6,Mac OSX 10.8.3.为了序列化对象,它不仅必须实现可序列化的,,而且所有类成员也应该可序列化。任何不需要序列化的字段都可以声明为“瞬态”
:
private transient MyUnwrittenType type;
好了,现在我的程序又可以运行了,虽然我在模型中的所有数据都丢失了,我从调用模型的其他类那里得到了NullPointerException。那么,我唯一的解决方案是将models对象存储在一个单独的列表中,并在开始时添加它们吗?谢谢。没有电话很难说。是否所有字段都序列化为NBE,例如KlippPris
?是。所有注册保持的对象都是可序列化的,包括DefaultComboxModel保持的klippris和my LinkedList保持的对象。我不确定还有什么代码可以发布,但我会尝试一下。正如我在本文中所写的,只有当我在寄存器中引入DefaultComboxModel时,问题才会出现。DefaultComboxModel
是序列化的,包括其所有类成员变量。查看中给出的示例。我还尝试将Object[]antTurer={new KlippPris(5,0)…
替换为Object[]antTurer={“String”…
,但没有成功。
com.apple.laf.AquaComboBoxUI
private transient MyUnwrittenType type;