所以我对JSwing世界很陌生,在我去年完成的AP计算机科学课程中没有多少内容。所以,我熟悉Java语言的继承和所有核心部分,但我看不出两个方法main()和run()之间的区别。
我的代码现在可以正常使用:
主要类别:
import java.awt.BorderLayout;
import java.awt.Component;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Main {
private JFrame frame;
public Main() {
frame = new JFrame("SoundCombine"); //Create frame
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Close the frame when |x| button is pressed
//Add components to the frame
JButton button = new JButton();
frame.getContentPane().add(button, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
}
运行类:
public class Run {
public static void main(String args[]){
new Main();
}
}
但是,我也看到了启动JSwing应用程序的这种方法:
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
两者之间有什么大的区别?使用两者中的任何一个,我将在未来遇到什么样的问题。虽然有很多不同的方法可以编写相同的程序,但我想知道传统方法。
谢谢!
答案 0 :(得分:3)
你在问橙色和水牛之间的区别 - 这两个是完全不同的东西。
run
方法是一个需要成为实现Runnable接口的任何类的一部分的方法。这不是程序启动的切入点。SwingUtilities.invokeLater(...)
方法是一种保证Runnable的run方法中的代码在Swing事件线程上被调用的方法,这是你想要的为了线程安全起见,在启动Swing(不 JSwing)应用程序时要做的事情,因为如果你不这样做,就会有抛出错误(实际上是异常)的风险。