2012-04-10 5 views
0

のJava:コンポーネント私はこのようなパネルにコンポーネントを配置しようとしています位置

sample of desired layout

が、私のコードでは、それは次のようになります。

actual layout

私が持っています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 

以下のコードは、パネルを作成するパネルの境界線を設定し、コンポーネントのためのFlowLayoutのを設定するためのものである:

 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); 

私はちょうどパッケージをスキップしてきたし、コンポーネントの宣言。プログラムは細かい状態で実行されています

ありがとうございます。

+0

Java命名規則を学び、それらに固執してください。 – kleopatra

答えて

4

最後にpack()を呼び出す必要があるかもしれません... gridlayoutを使用する必要があるよりも改行で部屋のタイプを希望しますが、pack()を呼び出すことを忘れてしまいます。終わり。

+0

通常、 'setVisible()'の直前です。 – trashgod

+0

私は、その行のすべてのコンポーネントをもたらすその1つを試しました。次の行に "ROOM type、Meal and Days"があります。 – Ravi

関連する問題