我想在我创建它的方法之外更改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!");
}
}
答案 0 :(得分:1)
您有一个班级字段JLabel TestLabel
。
但是在initialize
方法中,您使用具有相同名称的局部变量来遮蔽此字段:
JLabel TestLabel = new JLabel("");
所以类字段未初始化,后来对setText
的调用失败。
因此,只需写下:
TestLabel = new JLabel(""); // assigns to Main.TestLabel