何らかのアクションイベントが発生した(ボタンがクリックされた)後、JFrameコンポーネント(JPanel、ChartPanel)の一部を変更したい。具体的な例の下に:フレームが正しく更新されない
最初は私のフレームを空にしています(メニューバーだけで他のパネルはありません)。私は 'ファイル>開く'メニューをクリックしています、ファイルを選択し、ここでグラフになります。その後、私はフレームのサイズを変更しました。すべてが完璧です。 here is an illustration of problem
そしてここでは私のコードです:
public MenuBarDataAnalyser() {
JMenu menuFile = new JMenu("File");
itmOpen = new JMenuItem("Open...");
itmOpen.addActionListener(this);
add(menuFile);
menuFile.add(itmOpen);
}
@Override
public void actionPerformed(ActionEvent e) {
if(source == itmOpen){
final JFileChooser fch = new JFileChooser();
FileFilter filter = new FileNameExtensionFilter("FITS file", "fits");
fch.setFileFilter(filter);
int response = fch.showOpenDialog(itmOpen);
if (response == JFileChooser.APPROVE_OPTION){
String pathFilename = fch.getSelectedFile().toString();
JFreeChart chart = GUIDataAnalyserFrame.createChart(pathFilename);
ChartPanel chartPanel = new ChartPanel(chart, true, true, true, false, true);
JButton button = new JButton("Calibrate");
JPanel buttonPanel = new JPanel();
buttonPanel.add(button);
chartPanel.revalidate();
GUIDataAnalyserApp.analyserFrame.add(chartPanel, BorderLayout.CENTER);
GUIDataAnalyserApp.analyserFrame.add(buttonPanel, BorderLayout.EAST);
GUIDataAnalyserApp.analyserFrame.revalidate();
}
}
}
なぜ、この出来事と私はする必要があるが、次の私は、チャートが正常に更新されていない新しいグラフを取得するために再度ファイルを選択しクリックして、代わりにこのよ変化する?
ありがとうございました!できます。フレームから要素を削除し(存在する場合)、各要素の再検証と再描画を呼び出しました。 –
@AndreiSh:いいえ、各要素ではありません。すべてを削除して追加した後、コンテナ(ここでは 'GUIDataAnalyserApp.analyserFrame')で呼び出します。 –
同様の代替案が提案されています[ここ](http://stackoverflow.com/a/39120572/230513)。 – trashgod