2015-11-02 53 views
2

我想換一個JLabel的文本我創建它的方法之外。的Java改變的JLabel的文本內的另一種方法

我已經通過其他頁面看上去就同一主題,但我現在還不能讓它工作。也許我自己缺乏Java的知識來解決這個問題。 你能幫我嗎?

package autumn; 

import java.awt.EventQueue; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 

public class Main { 

    private JFrame frame; 

    JLabel TestLabel; 

    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       try { 
        Main window = new Main(); 
        window.frame.setVisible(true); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 
    public Main() { 
     initialize(); 
     setText(); 
    } 
    private void initialize() { 
     frame = new JFrame(); 
     frame.setBounds(100, 100, 450, 300); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.getContentPane().setLayout(null); 

     JLabel TestLabel = new JLabel(""); 
     TestLabel.setBounds(0, 0, 46, 14); 
     frame.getContentPane().add(TestLabel); 
    } 
    void setText() { 
     TestLabel.setText("Works!"); 
    } 
} 

回答

1

您有一個班級字段JLabel TestLabel

但在initialize方法通過使用一個局部變量具有相同名稱的陰影在這領域:

JLabel TestLabel = new JLabel(""); 

因此類字段沒有初始化,並setText以後調用失敗。

所以乾脆寫:

TestLabel = new JLabel(""); // assigns to Main.TestLabel 
+0

謝謝!你拯救了我的生命......和我的軟件的未來 –

相關問題