0

私は Java を初めて使用し、典型的な問題の 1 つを抱えています。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 に対するすべての対話と変更は、イベント ディスパッチ スレッドのコンテキスト内から実行されることが期待されます。つまり、EDT 以外のスレッドから UI コンポーネントを変更しようとしないでください。

詳細については、Swing での同時実行をご覧ください。

于 2013-09-27T06:41:05.167 に答える
1

パネルのサブクラスでスレッドを作成する場合は、次のことができます。

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 に答える