2012-02-11 56 views
8

访问组件创建的IntelliJ上

我创建了一个新的项目,选择创建一个图形用户界面的形式。然后我使用'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); 
    } 
} 

我然后与添加的属性,以我的HelloWorld类的头字段名title设计师添加一个JLabel。我现在想在程序运行后在字段名称上设置文本。

如果我有一个新的字符串作为参数创建JLabel实例,并将其添加到我的JFrame,然后该程序用一个空指针异常崩溃。

如果我创建不带任何参数JLabel中并调用的setText它,然后重新绘制的JFrame的,没有任何反应。

我想一些我的在一个单一的线的问题:如何访问,我已经使用GUI设计器创建的组件?

回答

11

首先,是的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对应的源代码文件并添加getters。确保命名部件...

0

在你的绑定类,自动生成的初始化代码看起来像:

private void $$$setupUI$$$() {} 

有关的IntelliJ的初始化代码更多的信息请参阅本Jetbrains的文档:Creating Form Initialization Code