Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在另一个类中使用DefaultComboxModel时出现NotSerializableException_Java_Notserializableexception_Comboboxmodel - Fatal编程技术网

Java 在另一个类中使用DefaultComboxModel时出现NotSerializableException

Java 在另一个类中使用DefaultComboxModel时出现NotSerializableException,java,notserializableexception,comboboxmodel,Java,Notserializableexception,Comboboxmodel,我正在做一个学校的大项目,项目快结束了。 我希望在我的程序中的不同类(JPanel)上同步2个JCombox,在不太了解JComponents如何工作之后,我发现保存数据的不是JCombox本身,而是ComboxModel 因此,在将DefaultComboxModel添加到我的寄存器(保存我所有数据的类)并将其共享给我的其他两个JPanel之后,它终于开始工作了 但是现在我在将Register类写入文件时得到了NotSerializable。(我已经将DefaultComboxModel从我的

我正在做一个学校的大项目,项目快结束了。 我希望在我的程序中的不同类(JPanel)上同步2个JCombox,在不太了解JComponents如何工作之后,我发现保存数据的不是JCombox本身,而是ComboxModel

因此,在将DefaultComboxModel添加到我的寄存器(保存我所有数据的类)并将其共享给我的其他两个JPanel之后,它终于开始工作了

但是现在我在将Register类写入文件时得到了NotSerializable。(我已经将DefaultComboxModel从我的Register类中删除,并使所有内容恢复工作,所以我知道这就是问题所在)

从文档中可以看到,DefaultComboxModel实现了Serialiazble,模型中的对象也实现了Serialiazble

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;