2013-07-24 69 views
2

組件我有一個創建一個基本的窗口下面的Java代碼:的Java:圍繞內部網格佈局

JPanel panelCampos, panelBoton; 
JLabel labelIdCedula, labelContrasena; 
JTextField textFieldIdCedula, textFieldContrasena; 
JButton buttonLogin; 

panelCampos = new JPanel(); 
labelIdCedula = new JLabel("ID/Cédula:"); 
textFieldIdCedula = new JTextField(); 
labelContrasena = new JLabel("Contraseña:"); 
textFieldContrasena = new JTextField(); 
panelBoton = new JPanel(); 
buttonLogin = new JButton("Iniciar sesión"); 

setIconImage(Config.ICONO); 
setDefaultCloseOperation(EXIT_ON_CLOSE); 
setSize(380, 214); 
setLayout(new BorderLayout()); 
setLocationRelativeTo(null); 
setResizable(false); 

panelCampos.setLayout(new GridLayout(2, 2)); 
panelCampos.add(labelIdCedula); 
panelCampos.add(textFieldIdCedula); 
panelCampos.add(labelContrasena); 
panelCampos.add(textFieldContrasena); 

panelBoton.add(buttonLogin); 

add(panelCampos, BorderLayout.CENTER); 
add(panelBoton, BorderLayout.SOUTH); 
setVisible(true); 

結果是:

Window result

而且我想那的每個組件矩陣(GridLayout)保持居中,而不是顯示在左側和不同大小,我該怎麼做?

謝謝。

回答

4

而且我要的是矩陣(網格佈局)的每個組件保持 中心,而不是在左側和不同大小顯示, 我該怎麼辦呢?

  • GridLayout不可能的,因爲在GridLayout所有元素的屏幕上有相同的大小,更在甲骨文的教程,真正的和漂亮的Swing GUI,你將需要使用GridBadLayoutSpringLayout,定製MigLayoutTableLayou

  • 簡單的黑客爲當前代碼

    1. 使用SwingConstants代表JLabel例如labelIdCedula = new JLabel("ID/Cédula:", SwingConstants.CENTER/*RIGHT*/);
    2. 做不setSize(結果顯示JTextFields挺可怕的尺寸),爲JTextField(int columns)定義尺寸,然後調用JFrame.pack(),而不是任何上漿
+2

什麼@ neo的:作爲參考,這裏有一個基本的[示例](HTTP://計算器。 com/a/5751044/230513)使用'JLabel.CENTER'。 – trashgod

0

要居中他們,我會把每個組件(或者更多,如果你希望它們緊挨着)在使用FlowLayout(默認佈局管理器)的JPanel中,然後將這些JPanel添加到JFrame中。 JPanels調整爲GridLayout,但JPanels上的組件保持在同一位置。

+0

感謝您的回答,但幾天前我可以找到解決方案,我忘記將答案標記爲「已接受」。順便說一句,謝謝^^ – Neo

0

另一個伎倆來修復你必須將JTextFields將添加到JPanels和應用的GridBagLayout對小組

JPanel pnlMain = new JPanel(); 
pnlMain.setLayout(New GridLayout(2,2)); 
JPanel pnl1 = new JPanel(); 
pnl1.setLayout(new GridBagLayout()); 
JTextField txtField = new JTextField(); 
pnl1.add(txtField); 
pnlMain.add(pnl1);