在IntelliJ中访问GUI设计器创建的组件

9

虽然我以前使用过Swing,但我从来没有使用过GUI设计器,并且在我的源代码中访问已经添加到面板上的组件时遇到了麻烦。

我创建了一个新项目并选择创建GUI表单。然后我使用“generate”选项创建了主要方法,现在我的“helloWorld.java”文件中有了这段代码。

public class helloWorld {


private JPanel myForm;
private JLabel text;

public static void main(String[] args) {
    JFrame frame = new JFrame("helloWorld");
    frame.setContentPane(new helloWorld().myForm);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setPreferredSize(new Dimension(800, 600));
    frame.pack();
    frame.setVisible(true);
    }
}

我在设计器中添加了一个带有字段名称 title 的 JLabel,这将添加一个属性到我的helloWorld类的头部。现在我想在程序运行后设置字段名称上的文本。

如果我使用新字符串作为参数创建JLabel实例并将其添加到我的JFrame中,则程序会崩溃并出现空指针异常。

如果我创建一个没有参数的JLabel,并在其上调用setText,然后在JFrame上调用repaint,则什么也不会发生。

我想用一句话总结我的问题:如何访问使用GUI设计器创建的组件?

2个回答

12

首先,IntelliJ在隐藏大量样板代码方面有些特殊,因此您的源代码实际上比底层操作要简单。

基本上,当您使用IntelliJ GUI构建器时,您最终得到的与表格对应的源代码看起来像这样:

public class DialogEditView {

    private JPanel mainPanel;
    private JLabel labelDescription;
    private JLabel labelExample;
    private JComboBox comboboxDEJC;

}

要能够访问这些内容,您可以简单地向该源文件中添加getter函数:

public class DialogEditView {

    private JPanel mainPanel;
    private JLabel labelDescription;
    private JLabel labelExample;
    private JComboBox comboboxDEJC;

    public JPanel getMainPanel() {
        return mainPanel;
    }

    // etc.

}

再次强调,IntelliJ 可以自动修改源代码或类文件(您可以在 设置 / GUI构建器 中测试这两个选项并查看它们的作用)。

如何访问我使用 GUI 设计器创建的组件?

您可以转到与 GUI 对应的源代码文件,并添加获取器。确保为您的组件命名...


0
您绑定类中自动生成的初始化代码如下:
 private void $$$setupUI$$$() {}

关于IntelliJ的初始化代码的更多信息,请参阅Jetbrains文档:创建表单初始化代码


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接