私は Java を初めて使用し、典型的な問題の 1 つを抱えています。Java が多重継承をサポートしていないことを知りました。だから私は以下のクラスを実装する方法を知りたい
class JPT extends JPanel extends Thread;
クラス化されたライブラリを編集できないという明らかな理由により、マルチレベルの継承は役に立ちません。編集すると、依存関係が原因で問題が発生する可能性があります。
私は Java を初めて使用し、典型的な問題の 1 つを抱えています。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 に対するすべての対話と変更は、イベント ディスパッチ スレッドのコンテキスト内から実行されることが期待されます。つまり、EDT 以外のスレッドから UI コンポーネントを変更しようとしないでください。
詳細については、Swing での同時実行をご覧ください。
パネルのサブクラスでスレッドを作成する場合は、次のことができます。
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();