В моем классе потока есть следующий код Java:
@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 в своем основном классе.
Я вижу, что окно обновляется, потому что оно некоторое время мигает.Я с нетерпением жду любых советов.