Lou*_*war 2 java swing repaint
我搜索了很多问题,但我从未找到我可以真正实现或理解的答案!
我不希望代码在屏幕重新绘制后继续运行!
我有一个简单的功能: wait until repaint has finished
public static void clearScreen()
{
panel.repaint();
}
Run Code Online (Sandbox Code Playgroud)
我现在可以告诉你,这有效!
唯一的问题是它不等待重新绘制,例如:
public static void blah()
{
drawSomething();
clearScreen();
drawSomething();
}
Run Code Online (Sandbox Code Playgroud)
这两幅图很有可能从屏幕上清晰可见。正如您可能猜到的那样,我不想要这个!
我只想提一下,所有单独的功能都可以工作!
请求组件上的重绘将向该组件添加一个重绘事件,该事件Event Dispatch Thread是一个单独的后台线程,paint()稍后将实际调用。
根据您正在执行的操作,drawSomething() 可能会在事件分派线程重新绘制之前或之后发生。最好的办法是通过在调用 SwingUtilities.invokeLater. 这将在事件调度线程上运行您的代码。事件分派线程上的所有进程都按照提交的顺序执行(通常,一些重绘请求被组合等),因此保留了调用的逻辑顺序。
在 Oracle Java 教程中了解有关事件调度线程的更多信息
| 归档时间: |
|
| 查看次数: |
4454 次 |
| 最近记录: |