Java:新组件何时显示在屏幕上?



下面的代码用于更新UI。但是当我调试第一行时,我发现即使它已经执行,帧现在也没有更新。我发现如果我在这些代码之后做一些长时间的计算,它不会再改变,帧不能关闭。

frame.getContentPane().add(gamePanel);
((JPanel)frame.getContentPane()).revalidate();
frame.repaint();

所以我的问题是什么时候会显示帧中的一些变化?

当你输入"this.setVisible(true);"

下面的代码用于更新UI。

我不知道你是在尝试初始显示框架,还是在当前可见的框架上更新组件。

如果你只是想让框架可见,那么基本代码是:

frame.add(...)
frame.pack();
frame.setVisible(true);

如果你想添加组件到一个可见的框架,那么基本代码是:

panel.add(...);
panel.revalidate();
panel.repaint();

我发现如果我在这些代码之后做一些长时间的计算…

面板将立即重新绘制,除非你有一些代码阻塞Event Dispatch Thread (EDT),这阻止了GUI重新绘制自己。

我发现如果我在这些代码之后做一些长时间的计算,

这表明您正在阻塞EDT。您需要为长时间运行的任务创建一个单独的Thread。有关更多信息,请阅读Swing教程中的并发部分。您可以查看使用SwingWorker在教程中讨论。

相关内容

  • 没有找到相关文章

最新更新