2016-05-24 18 views
0

私は同じパネルを何度か交換しますが、行う方法はわかりません。 私は自分のコードで計算するより多くのパラメータで初期化するコンストラクタを持つ "Grafico"クラスを作成しました。簡単にするために、これらのパラメータは省略します。 「ボックス」は、選択された項目に依存して活性化し、例えば、これらのパネル を作成していることをJComboBoxのである:パネルを同じパネルで更新する方法は?

JPanel middle = new JPanel(new BorderLayout()); 
Grafico graph1 = new Grafico(.......); 
JPanel conf1 = new JPanel(); 

middle.add(graph1, BorderLayout.CENTER); 
middle.add(conf1, BorderLayou.EAST); 
frame.getContentPane().add(middle); 

box.addItemListener(new ItemListener() { 

        @Override 
        public void itemStateChanged(ItemEvent e) { 

.........//I do something..I create a new object of type "Grafico" with new parameters........................ 

Grafico graph2 = new Grafico(.......); 
middle.remove(graph1); 

          middle.add(graph2, BorderLayout.CENTER); 

          frame.getContentPane().add(middle); 
          frame.getContentPane().revalidate(); 
          frame.getContentPane().repaint(); 


} 
}); 

そして、これは動作しますが、私はJComboBoxの中でオブジェクトをクリックして二時間、私はそれがほしいです私は毎回graph2を更新し、クリックごとに新しいグラフを作成することはありませんが、そうではありません!

+0

ので、graph2が存在すると仮定して、あなたはそれを更新する必要があります。つまり、graph2をインスタンスフィールドにして、nullかどうかを確認する必要があります。 – MadProgrammer

+0

自分のコードを変更して表示できますか? – user6368545

答えて

関連する問題