2017-12-22 12 views
0

小さなペットプロジェクトで作業していて、ComboBoxで奇妙な問題が発生しました。プログラムのこの部分の目的とする機能は、コンボボックス(その目的のために配列に変換される)を塗りつぶし、ファイルに書き込んだ後、ファイルを再度読み込んでそのオブジェクトを更新するアイテムをArrayListに追加することですコンボボックスのリスト 私は理解していないので、動的に変更されず、再ペイントが機能しませんでした。ただし、プログラムを閉じて再度開くと、コンストラクタが更新されたファイルを逆シリアル化するときに変更が反映されます。コードは次のとおりです。ComboBoxは、Javaの再起動時にのみ更新されます。

編集:私はrevalidateメソッドを試行しましたが、同じ動作が続けられます。プログラムが開いている間に、アイテムを追加するとリストに表示されず、追加されたアイテムはそこにないかのように動作し、参照を試みたヌルポインタをスローします。プログラムを閉じてもう一度開くと、直前の実行時に追加された項目がリストに表示されますが、削除方法は機能せず、項目は削除されませんプログラムの実行がアクティブです。

編集2:私のcomboBoxのコードと、両方とも呼び出された場所にrevalidate/repaintメソッドを組み込んでいます。私も両方として、動作は同じ

+0

コードのように、ArrayListにデフォルトモデルを更新するために必要なあなたが共有していることは間違いありませんが、コンボボックスを持っている場所のように追加できますか?あなたはどこで再塗りますか?私はこの質問を忘れないように後で私にタグを付けてください。 –

答えて

0

は自分自身をそれを考え出したまま、個別に試してみた、私はそう

comboBox.setModel(new DefaultComboBoxModel<Item>(itemList.toArray(new Item[itemList.size()]))); 
        comboBox.getParent().validate(); 
関連する問題