我正在学习 Java Swing,我对正在阅读的这个简单的代码教程有一些疑问:
package com.andrea.execute;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
/* An istance of a SimpleExample class is a JFrame object: a top level container */
public class SimpleExample extends JFrame {
/* Create a new SimpleExample object (that is a JFrame object) and set some property */
public SimpleExample() {
setTitle("Simple example");
setSize(300, 200);
setLocationRelativeTo(null); // Center the window on the screen.
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
SimpleExample ex = new SimpleExample();
ex.setVisible(true);
}
});
}
}
逻辑非常简单:我有一个继承自JFrame Swing 类的SimpleExample类。所以SimpleExample将是一个顶级容器。
此类还包含main()方法,现在我有两个疑问:
1) 为什么在 main() 方法中执行这段代码:
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
SimpleExample ex = new SimpleExample();
ex.setVisible(true);
}
});
它调用invokeLater()方法并向其传递一个新的 Runnable 对象。
阅读文档我知道这是将应用程序放在 Swing 事件队列中的一种方式。它用于确保所有 UI 更新都是并发安全的。
我有一些问题要理解的是它是如何实现的。
在invokeLater()方法的输入参数中,它传递了这个“东西”:
new Runnable() {
@Override
public void run() {
SimpleExample ex = new SimpleExample();
ex.setVisible(true);
}
});
这是什么东西?代表什么?它是如何工作的?
肿瘤坏死因子
安德烈亚