2011-12-22 7 views
0

スイングで少し助けが必要です。これは私のコードです:スイングとラベルのsetTextが機能しない

public class UIdostawca extends javax.swing.JFrame { 


    /** Creates new form UIdostawca */ 
    public UIdostawca() { 
     initComponents(); 
     setDefaultCloseOperation(javax.swing.JFrame.HIDE_ON_CLOSE); 
    } 

    /* This is my function */ 
    public void loadStuff() { 
     jLabel2.setText("Works or not?"); 
    } 


    /* 
     A lot of code generated by NETBEANS 
    */ 


    // Variables declaration - do not modify 
    private javax.swing.JLabel jLabel2; 

} 

私はこのようにそれを使用します。

UIdostawca a = new UIdostawca(); 

a.loadStuff(); 

とjLabel2が変化しなかった。(

しかし中で

jLabel2.setText("Works or not?"); 

を実行したときfunction like formWindowOpened

すべて動作します

+0

'a.loadStuff() 'を呼び出した後、' jLabel2'テキストをどこかにリセットしているように聞こえます。 – GETah

+0

完全なコードを貼り付けることはできますか? –

+0

投稿されたコードのランダムな行に基づいて、私たちは大いに役立つことはできません。問題を示す適切な[SSCCE](http://www.sscce.org)を投稿する必要があります。 – camickr

答えて

4

これはマルチスレッドの問題です。 formWindowOpenedが呼び出されると、インターフェイスを描画するのと同じスレッドであるSwingイベントディスパッチスレッド(EDT)によって呼び出され、描画するテキストの正しい値を持ちます。

他のスレッドからsetTextを呼び出すと、EDTはおそらくテキストの正しい値を取得しません。他のスレッドでsetTextを呼び出す場合は、SwingUtilities.invokeLater()にラップしてEDTのテキスト値を変更する必要があります。

0

最初のケースでは、jLabel2を初期化しましたか?

+0

はいもちろんです。:) – Domiik

+0

このコードを、UIdostawcaと新しいUIdostawca()の間で発生する他のrelieventコードとともに投稿できますか?およびa.loadStuff(); – Grammin

+0

問題は、間にコードがないことです。 – Domiik

関連する問題