contentPane에 문제가 있습니다. 문제의 코드는 다음과 같습니다.왜이 코드에서 contentPane을 .validate()하지 않습니까?
public void graph() {
JFrame frame = new JFrame("Graph");
Graph[] graphs = new Graph[timeSlices];
int k = 0;
for (TreeMap<MyPoint, BigDecimal> prevU : prevUs) {
graphs[k] = new Graph(prevU);
k++;
}
// The KeyList handles switching between graphs.
frame.addKeyListener(new KeyList(frame.getContentPane(), graphs));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(810, 500);
frame.setVisible(true);
}
private class KeyList extends KeyAdapter {
private Container contentPane;
private Graph[] graphs;
private int index;
public KeyList(Container contentPane, Graph[] graphs) {
this.contentPane = contentPane;
this.graphs = graphs;
this.index = 0;
this.contentPane.add(this.graphs[0]);
}
public void keyPressed(KeyEvent e) {
// Go back a time step
if (e.getKeyCode() == KeyEvent.VK_LEFT && index > 0) {
contentPane.remove(graphs[index]);
contentPane.add(graphs[--index]);
contentPane.validate();
System.out.println(index);
}
// Go forward a time step
else if (e.getKeyCode() == KeyEvent.VK_RIGHT && index < timeSlices - 1) {
contentPane.remove(graphs[index]);
contentPane.add(graphs[++index]);
contentPane.validate();
System.out.println(index);
}
// Exit if Esc is hit
else if (e.getKeyCode() == KeyEvent.VK_ESCAPE)
System.exit(0);
}
}
그래프는 단지 구성 요소이며 쉽게 알 수 있습니다. 오른쪽 화살표를 누르면 현재 표시된 그래프를 배열의 다음 그래프로 바꾸고 싶습니다. 왼쪽 화살표를 누르면 배열의 이전 화살표로 그래프를 교체하고 싶습니다.
이상한 일은 내가 맞을 때 잘 작동한다는 것입니다. 그러나 왼쪽을 누르면 그래프가 변경되지 않습니다. 색인이 변경되어 코드에 도달했음을 알지만 GUI는 변경되지 않습니다.
이제 준비하십시오. 오른쪽 키의 유효성 검사 행을 주석 처리하면 왼쪽 키가 약 절반의 시간 동안 작동합니다. 거기 무슨 일 이니? 실행하고 자기 (한 파일 만)를보고 싶다면 다음 코드의 나머지 부분은 http://pastebin.com/qWxWrypK입니다. 현재 사용중인 시작 매개 변수는 T = 1, dt = .01, L = 1, h = .05입니다. 어떤 도움
에 대한 나는 그것으로보고, 나는 JFrame의의의 contentPane 정말 JPanel의, 그러나 생각의 그 선이 어디하지 않았기 때문에 그것이있을 거라고 생각했다...
감사합니다
편집 :
그래서 아직 작업하고 있습니다. 또 다른 이상한 점이 있습니다. KeyList 클래스의 인덱스를 timeSlices-1로 설정하면 (기본적으로 그래프 배열의 마지막 그래프가 표시됨) 왼쪽으로 치면 작동합니다! 하지만 지금은 그렇지 않습니다! 색인이 바뀌기 때문에 이상한 일이 배열이나 무언가에서 계속되어야합니다. 흠.
편집 :
배열에 문제가 발생했습니다. 어떤 이유로 그래프는 한 번만 사용할 수 있습니다. 아마도 그것은 제거시 파괴되고 있습니까? 아니면 뭐 그런 ...
프로그램을 실행하는 매개 변수 값을 게시물에 추가하십시오. 그들 없이는 나는 당신의 프로그램을 시작할 수조차 없다. – MockerTim
죄송합니다. 내가 그렇게하는 것을 잊어 버렸습니다. (나는 처음부터 하드 코딩을했습니다.) – mtheoryninja