Я работаю над большим школьным проектом, и он подходит к концу. Я хочу, чтобы 2 JComboBoxes синхронизировались в разных классах (JPanels) в моей программе, и, не зная о том, как работает JComponents, я обнаружил, что сам JComboBox содержит данные, а ComboBoxModel.NotSerializableException при использовании DefaultComboBoxModel в другом классе
Итак, после добавления DefaultComboBoxModel к моему регистру (класс, который содержит все мои данные), и передав его другим моим JPANEL, он, наконец, работает.
Но теперь я получаю NotSerializable при записи моего класса Register в файл. (Я принимаю DefaultComboBoxModel из своего класса Register и снова вернулся к работе, поэтому я знаю, что это проблема).
Что я вижу в документации, DefaultComboBoxModel реализует 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;
}
Я думаю, что это не представляется возможным использовать DefaultComboBoxModel как список для хранения объектов и написать в файл, но я действительно не знаю, как решить эту проблему и по-прежнему держать мою программу динамичной.
Надеюсь, я сделал свою проблему понятной. Благодарю.
EDIT2: KlippPris
класс, который придерживается модели. (Isnt ПРОБЛЕМА)
public class KlippPris implements Serializable
{
private int antall;
private double rabatt;
...
}
EDIT3: Найдено, что проблема в Register
НЕ, но в Salg
и Administrasjon
. Не могу понять, почему Тхо ...
Salg.java (Administrasjon с использованием своего рода те же строки.)
public class Salg extends JPanel
{
private Register register;
...
private JComboBox antTurer;
public Salg(Register r)
{
super();
register = r;
gui();
}
private void gui()
{
...
paintKortkjøp();
...
}
private void paintKortkjøp()
{
...
// This line cause the exception.
antTurer = new JComboBox(register.getKlippPriser());
// This line dosen't cause any problems, but won't let my use my model.
antTurer = new JComboBox();
}
Почему это происходит? Я не пишу ни Salg
, ни Administrasjon
в файл, просто зарегистрируйтесь. Я также пробовал setModel()
без везения.
Не уверен, что, если исключение означает, что угодно:
com.apple.laf.AquaComboBoxUI
Java V.6, Mac OSX 10.8.3.
Хорошо, теперь моя программа является работоспособной снова Тхо все мои данные в модели теряется, и я получаю NullPointerException от других классов, призывающих к модель. Мое единственное решение для хранения объекта моделей в отдельном списке и добавление его при запуске? Спасибо. – Amiga
Трудно сказать без [sccee] (http://sscce.org/). Все поля serializanbe, например 'KlippPris'? – Reimeus
Да.Все объекты, которые хранятся в реестре, являются сериализуемыми, включая KlippPris, которые поддерживает DefaultComboBoxModel, и объекты, все мои связанные ссылки. Я не совсем уверен, какой еще код для публикации, но я попробую. Как я писал в тексте, проблема возникает только при представлении DefaultComboBoxModel в регистре. – Amiga