![](/img/trans.png)
[英]Unable to fill JTable component created with IntelliJ GUI Designer
[英]Accessing components created in GUI designer on IntelliJ
虽然在我从未使用过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);
}
}
然后我在设计器中添加了一个带有字段名称title
的JLabel,它为我的helloWorld类的头部添加了一个属性。 我现在想在程序运行后在字段名称上设置文本。
如果我使用新字符串作为参数创建JLabel实例并将其添加到我的JFrame,则程序会因空指针异常而崩溃。
如果我创建一个没有参数的JLabel并在其上调用setText然后在JFrame上重新绘制,则没有任何反应。
我想在一行中解决我的问题:如何访问我使用GUI设计器创建的组件?
首先,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可以修改源代码或自动修改类文件(您可以进入Settings / GUI Builder来测试这两个选项并查看它们的作用)。
如何访问我使用GUI设计器创建的组件?
您可以转到与GUI对应的源代码文件并添加getter。 确保为您的组件命名......
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.