我有以下创建基本窗口的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);
结果是:
我希望矩阵(GridLayout)的每个组件保持居中,而不是显示在左侧并具有不同的大小,我该怎么做?
谢谢你..
最佳答案
And I want that each component of the matrix (GridLayout) stays centered instead of displaying at the left and with different size, how can I do that?
不可能使用
GridLayout
,因为GridLayout
中的所有元素在屏幕上具有相同的大小,更多内容请参阅 Oracle 教程,以获得真实且漂亮的 Swing GUI需要使用GridBadLayout
或SpringLayout
、自定义MigLayout
、TableLayou
t当前代码的简单修改
- 将
SwingConstants
用于JLabel
,例如labelIdCedula = new JLabel("ID/Cédula:", SwingConstants.CENTER/*RIGHT*/);
- 不要
setSize
(结果显示JTextFields
的大小非常糟糕),定义JTextField(int columns)
的大小,然后调用JFrame.pack()
而不是任何大小调整
- 将
关于Java:将 GridLayout 中的组件居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17845048/