내 스레드 클래스의 자바 코드 다음 한 그래프 시각화를 새로 SWING + 정을 사용하는 동안 :하는 콘텐츠를
@Override
public void run() {
JFrame window = new JFrame("Visualization POC");
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
while (true) {
window.setVisible(false);
Layout<Node,Edge> layout = new CircleLayout<Node, Edge>(graph);
layout.setSize(new Dimension(300, 300));
BasicVisualizationServer<Node, Edge> vv = new BasicVisualizationServer<Node, Edge>(layout);
vv.setPreferredSize(new Dimension(350, 350));
vv.getRenderContext().setVertexFillPaintTransformer(new NodeColorTransformer());
vv.getRenderContext().setEdgeDrawPaintTransformer(new EdgeColorTransformer());
window.getContentPane().add(vv);
window.pack();
window.setVisible(true);
try {
Thread.sleep(ONE_SECOND);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
내가 그래프 시각화의 상태를 새로 고침을 사용하려면,하지만 난 거대한 문제에 붙어있어 . JFrame의 레이아웃 및 설정 내용을 작성하는 코드 블록이 루프 내에있는 경우 출력 창에 표시되지 않습니다. 내가 전에 그것을 배치 할 때, 그것은 잘 작동하지만 그것이 내가 원하는 것만은 아니다. 내 메인 클래스에서 SpringUtilities.invokeLater를 통해이 스레드를 실행합니다.
잠시 동안 깜박이기 때문에 창이 새로 고침되었음을 알 수 있습니다. 나는 어떤 조언도 기대하고있다.
_Don't_ 잠; _do_ [동시성의 동시성] (http://docs.oracle.com/javase/tutorial/uiswing/concurrency/)을 참조하십시오. – trashgod
그러나 배경 스레드의 작업 중 하나는 매초마다 데이터를 업데이트하는 것입니다. 그 다음 루프 또는 뭔가 메인 스레드에서 매초마다 실행해야합니까? – tomi891
좋아, 연구 후 루핑 스레드 실행에 대한 답변을 찾았습니다. 두 가지 주요 클래스 : java.util 패키지의 Timer 및 TimerTask – tomi891