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 を拡張し、それを Thread に渡すことができます。
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 に答える