2

このコードを使用すると、次のウィンドウが表示されます。2 つのパネルを作成し、mainp をフレームに追加し、パネルを mainp に追加しました。ウィンドウのサイズを動的に変更するためにこれを行いました (パネルがフレームに合わせてサイズ変更されません)。デフォルトのパネル サイズを大きくして、テキストがフィールドとラベルは広くなりますが、 panel.setsize は何もしていないようです。

ここに画像の説明を入力

// creates the labels
 studId = new JLabel("Student ID");
 studAvg = new JLabel("Student Average");
 studName = new JLabel("Student Name");

 // creates the text fields
 JTextField studIdText = new JTextField();
 JTextField studAvgText = new JTextField();
 JTextField studNameText = new JTextField();

 JPanel mainp = new JPanel();

 JPanel panel = new JPanel();
  panel.setLayout(new GridLayout(3, 2, 2, 2));

            panel.setSize(300, 100);

    // adds to the GridLayout
    panel.add(studId);
    panel.add(studIdText);
    panel.add(studName);
    panel.add(studNameText);
    panel.add(studAvg);
    panel.add(studAvgText);

    mainp.add(panel);
    add(BorderLayout.CENTER,mainp);

    // verifies the textfields
    studIdText.setInputVerifier(new IntVerifier());
    studAvgText.setInputVerifier(new DoubleVerifier());

    setTitle("Student Form");
    setSize(300, 200);
    setLocationRelativeTo(null);
    setDefaultCloseOperation(EXIT_ON_CLOSE);

ここに画像の説明を入力

4

3 に答える 3

3

お探しの方法は ですsetPreferredSize。の代わりに使用してくださいpanel.setSize(300, 100)

panel.setPreferredSize(new Dimension(300, 100));

また、JFrame のサイズを固定値 (300,200) に設定するのではなく、pack()代わりに設定することをお勧めします。これにより、内部のパネルに合わせて JFrame のサイズが設定されます。

于 2012-11-06T13:55:56.550 に答える
2

@Danと@MADprogrammerと@trashgodからのアドバイスを使用して私は次のことを思いついた

JTextField studIdText = new JTextField(20);

JPanel panel = new JPanel();
panel.setLayout(new GridBagLayout());
GridBagConstraints r1 = new GridBagConstraints();

r1.fill = GridBagConstraints.HORIZONTAL;
r1.weightx = 0.0;
r1.gridx = 0;
r1.gridy = 0;
panel.add(studId,r1);

r1.weightx = 0.5;
r1.gridx = 1;
r1.gridwidth = GridBagConstraints.REMAINDER; 
panel.add(studIdText,r1);

もちろんGridBagConstraints、すべての行を作成して、gridy

ここに画像の説明を入力してください

于 2012-11-07T08:09:58.813 に答える
1

mainpasのレイアウトを設定しますBorderLayout

mainp.setLayout(new BorderLayout());

次に、テキストフィールドの縦方向のサイズが変更されて奇妙に見えるのを避けるためにpanelBorderLayout.NORTHたとえば に追加できます。

mainp.add(panel, BorderLayout.NORTH);
于 2012-11-06T13:34:03.047 に答える