Java:组件位置

Java:组件位置,java,swing,user-interface,awt,Java,Swing,User Interface,Awt,我尝试将组件放置在面板中,如下所示: 但在我的代码中,它看起来是这样的: 我尝试过不使用FlowLayout,但问题是相同的。当我最大化窗口大小时,它将显示在一行中,但当我尝试调整窗口大小时,组件将从边框中移出 你能帮我解决这个问题吗?这是我的密码: CNameLabel=new JLabel("Customer Name"); CNameTextField = new JTextField (20); // create the Customer Name text fi

我尝试将组件放置在面板中,如下所示:

但在我的代码中,它看起来是这样的:

我尝试过不使用
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);
topPanel=newjpanel();
setLayout(新的FlowLayout());
topPanel.setBorder(新标题边框(新蚀刻边框(),“客户数据”);
topPanel.add(CNameLabel);topPanel.add(CNameTextField);topPanel.add(CIDLabel);
topPanel.add(C_IDTextField);
roomTypeLabel=新的JLabel(“房间类型”);
//创建并填充房间类型组合框
roomTypeCombo=新的JComboBox();
roomTypeCombo.addItem(“预算($50)”);
roomTypeCombo.addItem(“标准($75)”);
roomTypeCombo.addItem(“高管(200美元)”);
roomTypeCombo.addItem(“豪华($400)”);
mealLabel=新的JLabel(“膳食”);
//创建并填充膳食类型组合框
mealCombo=新JComboBox();
mealCombo.addItem(“无”);
mealCombo.addItem(“仅早餐($10)”);
mealCombo.addItem(“任意两个($30)”);
mealCombo.addItem(“全部三个($50)”);
daysLabel=新的JLabel(“天”);
//“创建和填充天数”组合框
daysCombo=newjcombobox();

对于(int i=0;i您可能需要在最后调用pack()。。。。。。。。。
我想如果你想在newline中使用房间类型,你需要使用gridlayout,但不要忘记在最后调用pack()。

你可能需要在最后调用pack()。。。。。。。。。
我想如果你想在newline中使用房间类型,那么你就需要使用gridlayout,但最后不要忘记调用pack()。

我尝试了一个生成行中所有组件的方法。虽然我想在下一行显示“房间类型、膳食和天数”。我尝试了一个生成行中所有组件的方法。尽管我想要“房间类型、膳食和天数”在下一行。请学习java命名约定并坚持它们。请学习java命名约定并坚持它们。