2

基本的なウィンドウを作成する次の 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) の各コンポーネントを左に異なるサイズで表示するのではなく、中央に配置したいのですが、どうすればよいですか?

ありがとうございました..

4

3 に答える 3

4

そして、マトリックス (GridLayout) の各コンポーネントを左に異なるサイズで表示するのではなく、中央に配置したいのですが、どうすればよいですか?

  • GridLayoutのすべての要素がGridLayout画面上で同じサイズであるためGridBadLayoutSpringLayoutでは不可能ですMigLayout.TableLayou

  • 現在のコードの簡単なハック

    1. SwingConstants例えば_ JLabel_labelIdCedula = new JLabel("ID / Cédula:", SwingConstants.CENTER/*RIGHT*/);
    2. しないでくださいsetSize(結果は の非常にひどいサイジングを示していJTextFieldsます)、 のサイズを定義してから、サイジングの代わりにJTextField(int columns)呼び出しますJFrame.pack()
于 2013-07-24T21:32:13.203 に答える
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);
于 2015-02-25T02:13:40.633 に答える
0

それらを中央に配置するには、FlowLayout(デフォルトのレイアウトマネージャー)を使用しているJPanelに各コンポーネント(または、それらを並べて配置したい場合はそれ以上)を配置し、それらのJPanelをJFrameに追加します。JPanels は GridLayout に合わせて調整されますが、JPanels 上のコンポーネントは同じ位置に留まります。

于 2013-08-15T05:03:22.800 に答える