Swing和标签setText不起作用

时间:2011-12-22 19:25:17

标签: java swing

我需要一点帮助摆动。这是我的代码:

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?"); 

formWindowOpened

等函数中

一切正常

2 个答案:

答案 0 :(得分:4)

这是一个多线程问题。当调用formWindowOpened时,它由Swing事件调度线程(EDT)调用,该线程与绘制接口的线程相同,因此它具有正确的文本值。

如果您从其他某个主题调用setText,则EDT可能无法获得正确的文本值。无论你在其他线程中调用setText,都必须将其包装在SwingUtilities.invokeLater()中,这将改变EDT上的文本值。

答案 1 :(得分:0)

在第一种情况下,您是否初始化了jLabel2?