0

次のようにコンポーネントをパネルに配置しようとしています。

ご希望のレイアウト例

しかし、私のコードでは、次のようになります。

実際のレイアウト

なしで試しFlowLayoutましたが、問題は同じです。ウィンドウのサイズを最大にすると一列に表示されますが、ウィンドウのサイズを変更しようとすると、コンポーネントが境界線からはみ出します。

この問題を解決するのを手伝ってくれませんか? これが私のコードです:

    CNameLabel=new JLabel("Customer Name");

    CNameTextField = new JTextField (20); // create the Customer Name text field
    CNameTextField.setEditable(true);     // set editable text box

    CIDLabel=new JLabel("Customer ID");

    C_IDTextField = new JTextField (10);
    C_IDTextField.setEditable(true);      // set editable text box

    // Creating and populating the Top Panel

以下のコードは、パネルを作成し、パネルの境界線を設定し、コンポーネントのフローレイアウトを設定するためのものです:

     topPanel=new JPanel();
     topPanel.setLayout(new FlowLayout());
     topPanel.setBorder(new TitledBorder(new EtchedBorder(), "Customer Data"));
     topPanel.add(CNameLabel); topPanel.add(CNameTextField); topPanel.add(CIDLabel);
     topPanel.add(C_IDTextField);

     roomTypeLabel=new JLabel ("Room Type ");

        //Create and populate Room type combo box
        roomTypeCombo = new JComboBox();
        roomTypeCombo.addItem( "Budget($50)" );
        roomTypeCombo.addItem( "Standard($75)" );
        roomTypeCombo.addItem( "Executive($200)" );
        roomTypeCombo.addItem( "Luxury($400)" );

        mealLabel=new JLabel ("Meal ");

        //Create and populate Meal type combo box
        mealCombo = new JComboBox();
        mealCombo.addItem( "None" );
        mealCombo.addItem( "Breakfast Only($10)" );
        mealCombo.addItem( "Any Two($30)" );
        mealCombo.addItem( "All Three($50)" );

        daysLabel=new JLabel ("Days");

        //Create and populate Days combo box

        daysCombo = new JComboBox();

        for(int i=0;i<31 ; i++)
                {

         daysCombo.addItem(i); // populate combobox with days

            }

       //Adding components to top panel

        topPanel.add(roomTypeLabel);
        topPanel.add(roomTypeCombo);
        topPanel.add(mealLabel);
        topPanel.add(mealCombo);
        topPanel.add(daysLabel);
        topPanel.add(daysCombo);

パッケージとコンポーネントの宣言をスキップしました。プログラムは良好な状態で実行されています

前もって感謝します。

4

1 に答える 1

4

最後に pack() を呼び出す必要があるかもしれません.........グリッドレイアウトを使用する必要があるよりも改行で部屋のタイプが必要な場合は、最後に pack() を呼び出すのを忘れてしまいます。

于 2012-04-10T03:46:00.047 に答える