public static void main(String[] args){
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
Mainwindow frame = new MainWindow();
frame.setVisible(true);
}
public class MainWindow extends JFrame {
public MainWindow(){
// methods to set title, bounds, JPanels, etc.
}
public static void methodOne(){
// updates GUI
}
public static void methodTwo(){
// also updates GUI
}
问题1:说我打电话
MainWindow.methodOne
来自static main,或来自静态main中实例化的另一个类。
是从EDT或初始线程运行的methodOne()?
Qustion 2:引用方法内部顶部的代码
@Override
public void run(){
}
最佳做法是使用:
MainWindow frame = new MainWindow();
frame.setVisibility(true);
或简单地说:
new MainWindow();
并且
setVisibility(true)
在MainWindow构造函数内部,考虑到MainWindow中的所有方法都是静态的吗?
请把所有答案都愚蠢,我对编码很新......
提前致谢
答案 0 :(得分:0)
Querstion 1
方法中的代码将在调用它们的线程上运行,对于您在哪个线程上创建调用方法的对象并不重要。在特定线程上创建对象时,只保证其构造函数在该线程上运行。
此外,在这种情况下,由于您使用static
方法,这些方法不属于frame
实例,它们属于MainWindow
类。
问题2
您使用的方法取决于您尝试做什么。 第一种方法为您提供了更多控制,使用它,您可以在某个时刻创建该类的新实例并在以后显示它。
第二种方法通常用于主框架,程序启动时显示的框架可以将该语句放在类中。构造