在准备考试时,我偶然发现了 Java 图形中的一些线条,但我不太清楚。所以我开始浏览并检查其他一些程序,它们没有这些行。
示例:
public static void main(String[] args){
SwingUtilities.invokeLater(new Runnable(){//unknown
public void run(){ //lines
JPanel panel = new DrawingPanel();
...
}
现在我知道 Runnable 和 run 必须处理线程,但我不知道这两行代码为什么以及如何工作
最佳答案
Swing 对象只能从在闭环处理重绘、GUI 事件等中运行的 Swing 线程访问。当应用程序启动时,它会在普通线程(而不是 Swing 线程)中启动。您看起来很奇怪的行使用 SwingUtilities
来执行 DrawingPanel 构造函数,并且可能在 Swing 线程中执行更多代码。
直接从主线程实例化第一个 GUI 框架的代码在实践中也可能有效,如果它确实是第一个被调用的方法(如预期的那样)。然而,这是“根本错误”的方法,如果调用方式不同等,以后可能无法在不同的机器上工作。
关于java swing,main方法中必要的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18428471/