【发布时间】:2016-12-15 20:58:38
【问题描述】:
使用window builder时默认的GUI代码如下。
import java.awt.EventQueue;
import javax.swing.JFrame;
public class Goo {
private JFrame frame;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Goo window = new Goo();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public Goo() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
我想从另一个类作为线程运行它。所以其他类看起来像,
public class GooRun {
public static void main(String[] args) {
// TODO Auto-generated method stub
Goo myGoo = new Goo();
Thread myThread = new Thread(myGoo);
myThread.start();
}
}
我不完全理解当您不使用实现 Runnable 或扩展 Thread 时 run 方法是如何工作的。
我得到的错误是构造函数未定义 Thread(Goo) 未定义。
【问题讨论】:
-
我可能错过了你程序的重点,但为什么你在两个类中都有一个 main 方法?
-
@JackVanier,一个类必须运行才能调用另一个类来运行
-
你到底想在
myThread里面做什么???请记住,作为 AWT 和所有基于它的系统,Swing 不是多线程安全的。您在 GUI 上所做的一切(设置可见、更改文本和其他类似的事情)都必须使用EventQueue类在 EDT(事件调度线程)上完成,就像窗口构建器所做的那样。 Read mode about this
标签: java multithreading swing user-interface runnable