setText方法不适用于Java中的javax.swing.JLabel

时间:2014-06-07 15:27:19

标签: java swing

我使用Swing制作了一个简单的GUI,一切正常,但是当我使用.setText方法时JLabel没有更新。我真的对这个问题感到困惑,因为JLabel应该正常工作。

 // Variables declaration                   
       private javax.swing.JDesktopPane jDesktopPane1;
       private javax.swing.JLabel jLabel1;     

public NewClass() {
        initComponents();
    }   

     private void initComponents() {
                jDesktopPane1 = new javax.swing.JDesktopPane();
                jLabel1 = new javax.swing.JLabel();
                jLabel1.setText("Hello JLabel!");
                jDesktopPane1.add(jLabel1, javax.swing.JLayeredPane.DEFAULT_LAYER);

                javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
                getContentPane().setLayout(layout);
                layout.setHorizontalGroup(
                        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(jDesktopPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 564, Short.MAX_VALUE)
                );
                layout.setVerticalGroup(
                        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(jDesktopPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 388, Short.MAX_VALUE)
                );

                pack();
            }

            public static void main(String args[]) {

                java.awt.EventQueue.invokeLater(new Runnable() {
                    public void run() {
                        new NewClass().setVisible(true);
                        new NewClass().start();
                    }
                });

            }                

            private void start() {

                this.jLabel1.setText("Hello!");
            }

2 个答案:

答案 0 :(得分:1)

new NewClass().setVisible(true);
new NewClass().start();

您已经创建了两个NewClass类的实例。

您只需要一个实例,然后可以在可见框架上设置标签的文本:

NewClass frame = new NewClass();
frame.setVisible(true);
frame.start();

如果要更改任何Object的属性,则需要对Object的引用。你不能只是继续使用“新”声明。

答案 1 :(得分:0)

我并不完全明白你要做什么,但如果你想在执行开始时尝试更新jLabelText,请试试这个

public NewClass() {
initComponents();
this.setVisible(true);
jLabel1.setText("YourText");
}