我是Java和Swing的新手,我正在使用Windowbuilder来处理我的一些GUI想法,但是在尝试设置Jlabel的文本时我遇到了一个问题。
Windowbuilder在initialize()方法中自动创建了一个名为pathLabel的Jlabel实例,如下所示:
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 570, 393);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JLabel pathLabel = new JLabel("New label");
pathLabel.setBounds(61, 296, 414, 15);
frame.getContentPane().add(pathLabel);}
如果我在这个initialize()方法中使用pathLabel.setText(“在这里输入文本”),那么它工作正常,但我如何从完全不同的方法设置文本?它不是让我参考它。
我从来没有在使用C#的Visual Studio中遇到此问题,并且能够从我选择的任何方法设置标签的文本。我错过了什么?
我希望这是有道理的,我感谢任何帮助。感谢。
答案 0 :(得分:2)
您可以在周围的类中为pathLabel创建一个字段,以便所有类方法都可以访问它:
class YourClass {
private JLabel pathLabel;
private void initialize() {
...
// Note that there is no declaration for pathLabel inside initialize
// since it was already declared above, and the above
// declaration is a reference shared by all class methods
pathLabel = new JLabel("New label");
...}
}
答案 1 :(得分:2)
您可以将pathLabel作为实例变量放在类中,并在类中的所有方法中访问它。
class GUIClass extends JFrame{
JLabel pathLabel;
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 570, 393);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
pathLabel = new JLabel("New label");
pathLabel.setBounds(61, 296, 414, 15);
frame.getContentPane().add(pathLabel);
}
void func(){
pathLabel.setText("enter text here");
}