![](/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.