Java在另一个方法中更改JLabel的文本

时间:2015-11-02 09:22:18

标签: java jlabel

我想在我创建它的方法之外更改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 个答案:

答案 0 :(得分:1)

您有一个班级字段JLabel TestLabel

但是在initialize方法中,您使用具有相同名称的局部变量来遮蔽此字段:

JLabel TestLabel = new JLabel("");

所以类字段未初始化,后来对setText的调用失败。

因此,只需写下:

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