私は同じパネルを何度か交換しますが、行う方法はわかりません。 私は自分のコードで計算するより多くのパラメータで初期化するコンストラクタを持つ "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を更新し、クリックごとに新しいグラフを作成することはありませんが、そうではありません!
ので、graph2が存在すると仮定して、あなたはそれを更新する必要があります。つまり、graph2をインスタンスフィールドにして、nullかどうかを確認する必要があります。 – MadProgrammer
自分のコードを変更して表示できますか? – user6368545