2011-12-22 4 views
0

스윙에 약간의 도움이 필요합니다. 경우에에스윙 및 레이블 setText가 작동하지 않습니다.

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

을 실행 (

을하지만, 변경하지 않은

UIdostawca a = new UIdostawca(); 

a.loadStuff(); 

과 jLabel2 :이처럼 사용

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; 

} 

: 이것은 내 코드입니다 기능은 다음과 같습니다. formWindowOpened

모든 것이 작동합니다.

+0

'a.loadStuff() '를 호출 한 후 어딘가에서'jLabel2' 텍스트를 재설정하는 것처럼 들립니다. – GETah

+0

전체 코드를 붙여 넣을 수 있습니까? –

+0

게시 된 코드의 임의의 줄을 기반으로 우리는별로 도움이되지 않습니다. 문제를 나타내는 적절한 [SSCCE] (http://www.sscce.org)를 게시해야합니다. – camickr

답변

4

이것은 멀티 스레딩 문제입니다. formWindowOpened이 호출되면 인터페이스를 그리는 스레드와 동일한 Swing 이벤트 발송 스레드 (EDT)에 의해 호출되므로 그리기 텍스트의 올바른 값을 갖습니다.

다른 스레드에서 setText을 호출하면 EDT에서 해당 텍스트의 올바른 값을 얻지 못할 수도 있습니다. 다른 스레드에서 setText을 호출 할 때마다 SwingUtilities.invokeLater()으로 묶어야합니다. SwingUtilities.invokeLater()은 EDT의 텍스트 값을 변경합니다.

0

첫 번째 경우 jLabel2를 초기화 했습니까?

+0

물론 예. :) – Domiik

+0

그 코드를 다른 relievent 코드와 함께 게시 할 수 있습니까? UIdostawca a = 새 UIdostawca(); 및 a.loadStuff(); – Grammin

+0

사이에 코드가 없다는 것이 문제입니다. – Domiik

관련 문제