我创建了一个GUI类和一个演示类。 demo类正在调用GUI。我想在另一个线程中运行GUI。
GUI类
public class UserGui extends JFrame {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
UserGui frame = new UserGui();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
演示班:
public class NNDemo {
public static void main(String[] args) {
UserGui gui = new UserGui();
gui.setVisible(true);
}
}
答案 0 :(得分:2)
public class UserGui extends JFrame {
public UserGui() {}
public void showGui() {
setVisible(true);
}
}
public class Demo {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
final UserGui GUI = new UserGui();
GUI.showGui();
}
});
}
}
答案 1 :(得分:1)
1。 Event Dispatcher Thread
(EDT)负责Gui。
main()
方法不长期,并且在事件调度程序线程中调度GUI的构造后,它会退出..所以现在它是EDT处理GUI的责任。
这就是我喜欢做上面例子的方式:
public class UserGui extends JFrame {
public UserGui() {
// You can set the size here, initialize the state and handlers.
}
}
public class Demo {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
new UserGui().setVisible(true);
}
});
}
}
答案 2 :(得分:1)
以下是Net beans自动生成的代码,用于在分离的线程中运行框架
public static void main(String[] args){
/*
* Create and display the form
*/
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new BoardPlay().setVisible(true);
}
});
}