私は、Runnable
インターフェイスを実装するJPanel
をJFrame
に割り当てようとしています。私はこの考え方を解釈するためのサンプルを作りました。私は新しいインスタンスのパラメータとしてString
のウィンドウにデモとしてテキストを表示するマルチスレッドパネルを追加したいと思います。私はRunnable
インターフェイスを実装したので、パネルは独立したプロセスを持つ必要があります。しかし、クラスの新しいインスタンスを持つ新しいインスタンスのパネルを作成しようとすると、動作しません。マルチスレッド拡張パネル
私は間違っていますか?
imagePanel Panelクラス:
メインクラステストクラスpublic class imagePanel extends JPanel implements Runnable{
JLabel imageTest;
public imagePanel(String textLabel)
{
this.setPreferredSize(new Dimension(300,300));
imageTest = new JLabel(textLabel);
imageTest.setPreferredSize(this.getPreferredSize());
}
public void setImageText(String newText){
imageTest.setText(newText);
}
public void run(){
this.add(imageTest);
}
}
:
public class test {
public static void main(){
JFrame frame = new JFrame("Test Window");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setPreferredSize(new Dimension(300,300));
JPanel panel = new imagePanel("Text label");
panel.setPreferredSize(frame.getPreferredSize());
frame.add(panel);
frame.setVisible(true);
}
}
:あなたが欠場すると、あなたの「実行」メソッドを実行するためのエントリポイントです。 Panelはユーザーインターフェイスコンポーネントです。スレッドでは何もしないでください。また、あなたのコードで 'run()'は決して呼び出されないので、それも "壊れています"。 – Kayaman
あなたのパネルにラベルを追加するのを忘れた –
@SergiyMedvynskyy実際のコードのある時点で 'panel'のインスタンスをラップする' Thread'を作成したと仮定すると、 、 'this.add(imageTest);'が呼び出されるはずですが、それは "if"の多くです。 – MadProgrammer