2

プロジェクトの簡単な GUI をモックアップしました。ラベルとテキスト フィールドは表示されますが、何らかの理由でウィンドウのサイズが変更されません。

基本的な概要は次のとおりです。

JFrame の作成と JPanel の追加:

   JFrame frame1 = new JFrame("Hotel Reservation App");
   frame1.getContentPane().add(rViewPan, BorderLayout.CENTER);
   frame1.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

   frame1.pack();
   frame1.setVisible(true);

これは、rViewPan の JPanel コードです。

 private void initComponents() {

    setLayout(new BorderLayout());

    arrivalDateTF = new JTextField();


    departureDateTF = new JTextField();
    roomCategoryTF = new JTextField();
    roomQtyTF = new JTextField();

    JTextField[] textFields = { arrivalDateTF, departureDateTF, roomCategoryTF, roomQtyTF };
    JLabel[] textLabels = { new JLabel("1 : "), new JLabel("2 : "),
            new JLabel("3 : "), new JLabel("4 : ")
    };

    JPanel displayPan = new JPanel();
    GridBagLayout gridBagLay = new GridBagLayout();
    GridBagConstraints gridBagC = new GridBagConstraints();

    displayPan.setLayout(gridBagLay);
    SwingUtilities.addTextElementsAsRows(textLabels, textFields, gridBagLay, displayPan);

    gridBagC.gridwidth = GridBagConstraints.REMAINDER;
    gridBagC.anchor = GridBagConstraints.EAST;
    gridBagC.weightx = 1.0;

    displayPan.add(new JLabel(" "), gridBagC);

    submitB = new JButton("Soumettre");
    displayPan.add(submitB, gridBagC);

    SwingUtilities.addStdBorder(displayPan, "Reservation");
    add(displayPan, BorderLayout.CENTER);

}

基本的に、適切な高さに合わせたサイズのウィンドウを取得しますが、フィールドは水平方向に隠されています。

4

1 に答える 1

3

..ウィンドウは、含まれているものにサイズ変更されません。

この変種は.

TestGui

GUI を動作させる方法がわからない場合は、SSCCE を作成して投稿することをお勧めします。

import java.awt.*;
import javax.swing.*;

// TODO don't extend JPanel, just create an instance
class TestGui extends JPanel {

    JTextField arrivalDateTF;
    JTextField departureDateTF;
    JTextField roomCategoryTF;
    JTextField roomQtyTF;
    JButton submitB;

    TestGui() {
        initComponents();
    }

    private void initComponents() {
        setLayout(new BorderLayout());

        arrivalDateTF = new JTextField(6);
        departureDateTF = new JTextField(6);
        roomCategoryTF = new JTextField(8);
        roomQtyTF = new JTextField(2);

        JTextField[] textFields = { arrivalDateTF, departureDateTF, roomCategoryTF, roomQtyTF };
        JLabel[] textLabels = { new JLabel("1 : "), new JLabel("2 : "),
            new JLabel("3 : "), new JLabel("4 : ")
        };

        JPanel displayPan = new JPanel();
        GridBagLayout gridBagLay = new GridBagLayout();
        GridBagConstraints gridBagC = new GridBagConstraints();

        displayPan.setLayout(gridBagLay);
//      SwingUtilities.addTextElementsAsRows(textLabels, textFields, gridBagLay, displayPan);
        for (int ii=0; ii<textFields.length; ii++) {
            displayPan.add( textLabels[ii] );
            displayPan.add( textFields[ii] );
        }

        gridBagC.gridwidth = GridBagConstraints.REMAINDER;
        gridBagC.anchor = GridBagConstraints.EAST;
        gridBagC.weightx = 1.0;

        displayPan.add(new JLabel(" "), gridBagC);

        submitB = new JButton("Soumettre");
        displayPan.add(submitB, gridBagC);

//      SwingUtilities.addStdBorder(displayPan, "Reservation");
        add(displayPan, BorderLayout.CENTER);
    }

    public static void main(String[] args){
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JFrame frame1 = new JFrame("Hotel Reservation App");
                frame1.getContentPane().add(new TestGui(), BorderLayout.CENTER);
                frame1.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

                frame1.pack();
                frame1.setVisible(true);
            }
        });
    }
}
于 2012-05-11T20:38:46.910 に答える