繁体   English   中英

Java Swing-通过其他方法设置Jlabel文本

[英]Java Swing - set Jlabel text from another method

我是Java和Swing的新手,并且正在使用Windowbuilder来尝试一些我拥有的GUI想法,但是在尝试设置Jlabel的文本时遇到了问题。

Windowbuilder会在initialize()方法中自动创建Jlabel的实例,称为pathLabel,如下所示:

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(“ enter text here”),则可以正常工作,但是如何从完全不同的方法中设置文本? 这不是让我引用它。

我从未在使用C#的Visual Studio中遇到此问题,并且能够通过我选择的任何方法设置标签的文本。 我想念什么?

我希望这是有道理的,并且我非常感谢您的帮助。 谢谢。

您可以在周围的类中为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");
        ...}   
}

您可以将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");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM