我是 Java 新手,遇到了一个典型的问题。我知道 Java 不支持多重继承。所以我想知道如何实现下面的类
class JPT extends JPanel extends Thread;
由于无法编辑分类库的明显原因,多级继承对我没有帮助,如果我进行编辑,我可能会由于依赖关系而最终出现问题。
我是 Java 新手,遇到了一个典型的问题。我知道 Java 不支持多重继承。所以我想知道如何实现下面的类
class JPT extends JPanel extends Thread;
由于无法编辑分类库的明显原因,多级继承对我没有帮助,如果我进行编辑,我可能会由于依赖关系而最终出现问题。
你应该使用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 中的并发以获取更多详细信息
如果你想在 Panel 的子类上创建一个线程,你可以这样做
class JPT extends JPanel implements Runnable
{
JPT()
{
new Thread(this).start();
}
public void run()
{
// Code to run in new thread here.
}
}
希望这可以帮助。
当然,Java 不支持多重继承,但是你可以在一个类中实现多个接口。在你的情况下,我会使用:
class JPT extends Jpanel implements Runnable {
任何implements Runnable
, 然后都可以作为参数传递给Thread
构造函数。例如
JPT JPT = new JPT();
Thread t = new Thread(JPT);
T.start();