일부 동작 이벤트가 발생하면 (단추를 클릭 한 후) 일부 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