虽然在我从未使用过GUI设计器之前我已经使用过Swing,而且我在访问组件时遇到问题,但是我已经从源代码中删除了我的面板。
我创建了一个新项目,并选择创建一个GUI表单。然后我使用'generate'选项创建了main方法,现在我在'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);
}
}
然后我在设计器中添加了一个JLabel,其字段名为title
,它为我的helloWorld类的头部添加了一个属性。我现在想在程序运行后在字段名称上设置文本。
如果我使用新字符串作为参数创建JLabel实例并将其添加到我的JFrame,则程序会因空指针异常而崩溃。
如果我创建一个没有参数的JLabel并在其上调用setText然后在JFrame上重新绘制,则没有任何反应。
我想在一行中解决我的问题:如何访问我使用GUI设计器创建的组件?
答案 0 :(得分: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 Builder 来测试两个选项和看看他们做了什么。)
如何访问我使用GUI创建的组件 设计师?
您可以转到与GUI对应的源代码文件并添加getter。确保为您的组件命名......
答案 1 :(得分:0)
绑定类中自动生成的初始化代码如下所示:
private void $$$setupUI$$$() {}
有关IntelliJ初始化代码的更多信息,请参阅此Jetbrains文档:Creating Form Initialization Code