試圖在存在並使用netbeans設計創建的面板上創建文本框。這裏是代碼:在使用netbeans創建的現有面板中創建jtextfield
JTextField test1TextField = new JTextField(actTerm.getDescription().length());
test1TextField.setBorder(javax.swing.BorderFactory.createTitledBorder("TestField1"));
term1TextField.setText(actTerm.getDescription());
openPanel.add(test1TextField);
openPanel.validate();
openPanel.repaint();
openPanel.updateUI();
openPanel,正如我所說的是通過netbeans設計工具創建的。驗證,重繪和updateUI,我只是嘗試不同的事情,都失敗了。運行時,創建的文本字段不會顯示在面板上。不知道還有什麼要嘗試的。
添加以下對openPanel的引用。這是NetBeans的代碼不是我:
javax.swing.GroupLayout openPanelLayout = new javax.swing.GroupLayout(openPanel);
openPanel.setLayout(openPanelLayout);
openPanelLayout.setHorizontalGroup(
openPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(openPanelLayout.createSequentialGroup()
.addGap(31, 31, 31)
.addGroup(openPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(openPanelLayout.createSequentialGroup()
.addComponent(saveOpenTermsButton)
.addGap(70, 70, 70)
.addComponent(deleteOpenTermsButton)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(openPanelLayout.createSequentialGroup()
.addGroup(openPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1)
.addComponent(term1TextField, javax.swing.GroupLayout.PREFERRED_SIZE, 267, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 55, Short.MAX_VALUE)
.addComponent(term2TextField, javax.swing.GroupLayout.PREFERRED_SIZE, 128, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(97, 97, 97))))
);
openPanelLayout.setVerticalGroup(
openPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(openPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1)
.addGap(34, 34, 34)
.addGroup(openPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(term1TextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(term2TextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 143, Short.MAX_VALUE)
.addGroup(openPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(saveOpenTermsButton)
.addComponent(deleteOpenTermsButton))
.addGap(29, 29, 29))
);
rulesTabbedPanel.addTab("Open Rules", openPanel);
['openPanel.revalidate()'](https://docs.oracle.com/javase/7/docs/api/javax [ /swing/JComponent.html#revalidate())? – nullpointer
@nullpointer:是的,我應該提到,因爲這比'validate()'更好。除非更改GUI的外觀,否則'updateUI()'幾乎不會被調用。對於像這樣的問題,最好發佈一個有效的[mcve]。 –
好的,所以你**都是使用GroupLayout的 - 所以選擇一個不同的,看看它是怎麼回事。請查看下面對我的答案的編輯,如果您有任何問題,請發表評論。 –