我有以下创建基本窗口的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)保持居中而不是在左侧显示并且具有不同的大小,我该怎么做?
谢谢..
答案 0 :(得分:4)
我希望矩阵的每个组件(GridLayout)保持不变 居中而不是左侧显示,大小不同, 我怎么能这样做?
GridLayout
无法实现,因为GridLayout
中的所有元素在屏幕上都有相同的大小,在Oracle教程中更多,对于真正的和漂亮的Swing GUI,您需要使用{{ 1}}或GridBadLayout
,自定义SpringLayout
,MigLayout
t
当前代码的简单黑客
TableLayou
用于SwingConstants
,例如JLabel
labelIdCedula = new JLabel("ID / Cédula:", SwingConstants.CENTER/*RIGHT*/);
(结果显示setSize
的大小非常糟糕),定义JTextFields
的大小,然后调用JTextField(int columns)
而不是任何大小调整答案 1 :(得分:0)
为了使它们居中,我将每个组件放在一起(或者如果你希望它们彼此相邻,则更多)在使用FlowLayout(默认布局管理器)的JPanel中,然后将这些JPanel添加到JFrame中。 JPanels调整为GridLayout,但JPanels上的组件保持在相同的位置。
答案 2 :(得分:0)
修复你所拥有的另一个技巧是将JTextFields添加到JPanels并将GridBagLayout应用到Panels
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);