私は大きな学校のプロジェクトに取り組んでおり、それが終わりに近づいています。プログラム内の異なるクラス (JPanels) で 2 つの JComboBox を同期させたいのですが、JComponent がどのように機能するかについてあまり知らなかったので、データを保持しているのは JComboBox 自体ではなく、ComboBoxModel であることがわかりました。
したがって、DefaultComboBoxModel を Register (すべてのデータを保持するクラス) に追加し、それを他の 2 つの JPanel と共有すると、ようやく機能するようになりました。
しかし、Register クラスをファイルに書き込むときに NotSerializable を取得するようになりました。(私は 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
モデルが保持するクラス
。(問題ではありません)
public class KlippPris implements Serializable
{
private int antall;
private double rabatt;
...
}
EDIT3:
問題は ではなく と にあることがわかりました。どうしてなのか、まったく理解できません...Register
Salg
Administrasjon
Salg.java (ほぼ同じ行を使用して管理します。)
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。