0

我是 Java 新手,遇到了一个典型的问题。我知道 Java 不支持多重继承。所以我想知道如何实现下面的类

class JPT extends JPanel extends Thread;

由于无法编辑分类库的明显原因,多级继承对我没有帮助,如果我进行编辑,我可能会由于依赖关系而最终出现问题。

4

3 回答 3

4

你应该使用Runnable界面......

class JPT extends JPanel implements Runnable

这样,您只需创建一个新Thread实例,将您的JPT类的引用传递给它并启动它......

JTP jpt = new JPT();
Thread thread = new Thread(jpt);
thread.start();

现在,我必须告诉你,这让我很害怕。

Swing 是一个单线程框架。也就是说,对 UI 的所有交互和修改都应该在 Event Dispatching Thread 的上下文中执行,这意味着您永远不应该尝试从 EDT 以外的任何线程修改任何 UI 组件。

查看Swing 中的并发以获取更多详细信息

于 2013-09-27T06:41:05.167 回答
1

如果你想在 Panel 的子类上创建一个线程,你可以这样做

class JPT extends JPanel implements Runnable
{
    JPT()
    {
        new Thread(this).start();
    }

    public void run()
    {
        // Code to run in new thread here.
    }
}

希望这可以帮助。

于 2013-09-27T06:42:17.713 回答
1

当然,Java 不支持多重继承,但是你可以在一个类中实现多个接口。在你的情况下,我会使用:

class JPT extends Jpanel implements Runnable {

任何implements Runnable, 然后都可以作为参数传递给Thread构造函数。例如

JPT JPT = new JPT();
Thread t = new Thread(JPT);
T.start();
于 2013-09-27T06:44:17.817 回答