簡體   English   中英

訪問IntelliJ上GUI設計器中創建的組件

[英]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。 確保為您的組件命名......

綁定類中自動生成的初始化代碼如下所示:

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

有關IntelliJ初始化代碼的更多信息,請參閱此Jetbrains文檔: 創建表單初始化代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM