2013-11-28 33 views
0

如果在一個JPanel中可以有多個JtextField,我感到困惑嗎?如果是,那麼如何使用下面提供的代碼。多個JTextFields?

我的代碼:

private JPanel jp; 
private JTextField jt; 

jt = new JTextField(); 
jt.setBounds(1, 25, 60, 20); 
jp.add(jt); 
jt.setColumns(10); 

JLabel npcId = new JLabel("npcId"); 
npcId.setBounds(15, 11, 92, 14); 
jp.add(npcId); 

我什麼建築:

enter image description here

我想在這裏完成的是有5個JTextField對象:npcId,npcLocation,npcReg,npcAH ,npcAA。

+0

當然可以。你有什麼嘗試,它是如何失敗? – John3136

+3

請查看與Swing佈局管理器相關的文檔http://docs.oracle.com/javase/tutorial/uiswing/layout/using.html 這是一種非常靈活的方式來控制GUI元素的位置 – XZen

+2

'Don' t使用setBounds()。'你發現那個例子擺脫它的地方。您應該按照上面的建議使用佈局管理器。 – camickr

回答

4

是的,這很容易,你需要使用適當的佈局管理器。

看看,在A Visual Guide to Layout Managers

我可能會建議的東西網格佈局開始,但最終,你會想看看GridBagLayout的。

不要忘了,你可以使用複合佈局來創建複雜的佈局

1

此外,你可能會考慮這些基本的方法:

// Use of Textfield 
usernameField = new JTextField(8); 
usernameField.setLocation(0, 0); 
usernameField.setSize(100, 30); 
+0

所以'jt = new JTextField(); jt.setLocation(0,0); jt.setSize(100,30);' 我該如何去重複這個操作來創建更多的文本字段....? – Ryan

+0

例如'jt2 = new JTextField();'等 – Simon

1

是你可以很容易,你真的必須是 1)申報所有JTextField的情況下,如:

jt = new JTextField(); 
jt.setBounds(1, 25, 60, 20); 
jp.add(jt); 
jt.setColumns(10); 

2)聲明你的JPanel像

private JPanel jp; 

jp = new JPanel();// here you have to set a layout manager for this panel 
//for exampl: 
jp.setLayout(new FlowLayout()); 

here檢查佈局管理器。

3)所有申報JTextFields將添加到您的面板:

jp.add(jt); 
jp.setVisible(true); 
+0

已經有這個,但是謝謝。 – Ryan