Java:将 GridLayout 中的组件居中

标签 java swing center layout-manager grid-layout

我有以下创建基本窗口的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)的每个组件保持居中,而不是显示在左侧并具有不同的大小,我该怎么做?

谢谢你..

最佳答案

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需要使用 GridBadLayoutSpringLayout、自定义 MigLayoutTableLayout

  • 当前代码的简单修改

    1. SwingConstants 用于 JLabel,例如labelIdCedula = new JLabel("ID/Cédula:", SwingConstants.CENTER/*RIGHT*/);
    2. 不要setSize(结果显示JTextFields的大小非常糟糕),定义JTextField(int columns)的大小,然后调用 JFrame.pack() 而不是任何大小调整

关于Java:将 GridLayout 中的组件居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17845048/

相关文章:

java - Mahout - 推荐评估器返回 0.0

java - 电子邮件地址中的特殊字符抛出异常

java - Cisco的ASDM是用什么GUI工具包编写的?

java - 如何动态更改 JFrame 内的 JPanel?

html - 居中图像 block

css - 图像上的响应式文本垂直居中

java - 从 Log4j 迁移到 Log4j2 时的 RollingFileAppender 实现

java - Java SWT 中的 ExpandBar/ExpandItem 背景/前景色

java - 如何在 Mac 上以编程方式缩放 JFrame 窗口?

css - 为 div 设置动画并从中心展开