我的线程类中有以下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 创建布局和设置内容的代码块在 while 循环内时,它不会显示在输出窗口中。当我之前放置它时,它工作正常,但这不是我想要的。我在主类中通过 SpringUtilities.invokeLater 运行这个线程。
我可以看到窗口正在刷新,因为它正在闪烁一段时间。我期待着任何提示。