我有一个扩展 Thread 的类,并且需要在同一个类上扩展 JFrame。由于在 Java 中不可能进行多重继承,它如何在已经扩展 Thread 的类中使用 JFrame 对象?
问问题
6600 次
3 回答
13
不是扩展 JFrame 或 Thread,而是使用组合,它的限制要少得多:
public class MyApplication {
JFrame applicationFrame;
Thread someThread;
MyApplication() {
SwingUtilities.invokeLater(new Runnable() {
@Override void run() {
applicationFrame = new JFrame();
// some more GUI initialization.
applicationFrame.setVisible(true);
}
});
someThread = new Thread(new Runnable() {
@Override void run() {
// do my work.
}
});
someThread.start();
}
public static void main(String... args) {
new MyApplication();
}
}
于 2013-02-08T02:24:31.167 回答
3
除了扩展 Thread,你可以让类实现 Runnable 吗?这样,您可以改为扩展 JFrame,将其传递给线程。
public class MyFrameThread extends JFrame implements Runnable {
@Override
public void run() {
...
}
}
public static void main(String... args) {
Thread myThread = new Thread(new MyFrameThread());
myThread.start();
myThread.join();
}
于 2013-02-08T02:05:02.743 回答
2
您可以轻松地使用 JFrames 和 Threads 而无需扩展它们,并且正如大多数人所建议的那样,您通常最好不要扩展它们。扩展它们会将您的类绑定到 JFrame,从而阻止您以后在 JPanel、JDialog 等中使用它。如果没有必要,为什么要像这样限制自己呢?
于 2013-02-08T02:23:41.287 回答