3

JFrame を手動で作成し、Spring Layout を使用してこれを行いたいと考えています。しかし、私の最終的な出力は良くありません。行間のスペースは非常に大きく、ラジオ ボタン間のスペースも大きくなっています。

出力例

私のコード:

public final class NewUserFrame1 extends JFrame {

public NewUserFrame1() {
    add(rowComponent(), BorderLayout.CENTER);
    setLocation(200, 40);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setResizable(false);
    setVisible(true);
    pack();
}

public JPanel rowComponent() {

    JPanel panel = new JPanel();
    JLabel fnamelbl = new JLabel("First name");
    JLabel lnamelbl = new JLabel("Last Name");
    JLabel fntemp = new JLabel();
    JLabel lntemp = new JLabel();
    JTextField fntf = new JTextField(10);
    JTextField lntf = new JTextField(10);
    JLabel gndlnl = new JLabel("Gender");
    JRadioButton malerb = new JRadioButton("Male");
    JRadioButton femalerb = new JRadioButton("Female");
    ButtonGroup bgroup = new ButtonGroup();
    bgroup.add(malerb);
    bgroup.add(femalerb);
    JLabel registnm = new JLabel("Registration ID is:");
    JLabel showreglbl = new JLabel();
    JLabel regtemp = new JLabel();

    panel.add(fnamelbl);
    panel.add(fntf);
    panel.add(fntemp);
    panel.add(lnamelbl);
    panel.add(lntf);
    panel.add(lntemp);
    panel.add(gndlnl);
    panel.add(malerb);
    panel.add(femalerb);
    panel.add(registnm);
    panel.add(showreglbl);
    panel.add(regtemp);

    panel.setLayout(new SpringLayout());
    SpringUtilities.makeCompactGrid(panel, 4, 3, 50, 15, 3, 4);
    return panel;
}

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            NewUserFrame1 newUserFrame1 = new NewUserFrame1();
        }
    });
}
}

今: ここに画像の説明を入力

4

2 に答える 2

1

コンストラクター内でsetSizecall packonを呼び出す代わりに。JFrameNewUserFrame1

public NewUserFrame1() {
    add(rowComponent(), BorderLayout.CENTER);
    setLocation(200, 40);
    //setSize(800, 500);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setResizable(false);
    setVisible(true);
    pack();
}

SpringUtilities.makeCompactGridまた、次の方法でメソッドのパラメーターを変更します。

SpringUtilities.makeCompactGrid(panel, 4, 3, 50, 15, 3, 4);//change yPad to 4 instead of 100. It sets the vertical height between two rows
于 2013-04-09T18:55:19.483 に答える
1
  1. あなたのコードはコンパイルできません (インポートがありません)。
  2. あなたが書いた:

    SpringUtilities.makeCompactGrid(パネル、4、3、50、15、3、100);

最後の引数は yPad です。これを 10 (または必要に応じてより低い値) に変更します。次に例を示します。

SpringUtilities.makeCompactGrid(panel, 4, 3, 50, 15, 3, 10);

それでも - ラベルが高くなりすぎますが、それは別の問題です。パネルのサイズとコンポーネントのサイズで遊んでください。

ラジオボタンの場合 - 変更

panel.add(malerb);
panel.add(femalerb);

次のようなものに:

JPanel radioPanel = new JPanel();
radioPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
radioPanel.add(malerb);
radioPanel.add(femalerb);
panel.add(radioPanel);
panel.add(new JLabel());

レイアウトに 3 つの列があると宣言したため、最後の行が必要です。

于 2013-04-09T10:14:14.837 に答える