为什么即使在设置边界后我的面板也没有正确定位?

时间:2012-09-04 09:11:32

标签: java jframe jpanel

我正在尝试使用单选按钮创建一个简单的GUI,然后将它们分组到一个面板中。我希望它位于最左侧,所以我使用了setBounds方法。无论我在参数上添加什么数字,面板都不会移动。面板是否不受setBounds方法的影响?或者是否有另一种方法来定位我的面板。这是我的代码片段:

    JPanel radioPanel = new JPanel();
    radioPanel.setLayout(new GridLayout(3,1));
    JRadioButton Rbutton1 = new JRadioButton("Credit Card");
    JRadioButton Rbutton2 = new JRadioButton("E-Funds");
    JRadioButton Rbutton3 = new JRadioButton("Check");
    Rbutton3.setSelected(true);
    ButtonGroup Bgroup = new ButtonGroup();
    Bgroup.add(Rbutton1);
    Bgroup.add(Rbutton2);
    Bgroup.add(Rbutton3);
    radioPanel.add(Rbutton1);
    radioPanel.add(Rbutton2);
    radioPanel.add(Rbutton3);
    radioPanel.setBounds(10,50,50,40); //this is where I'm trying to position the panel with the radio buttons
    paymentPanel.add(radioPanel);
    contentPane.add(paymentPanel); //contentPane is the frame
    contentPane.setVisible(true);

3 个答案:

答案 0 :(得分:2)

设置框架的布局。例如:

    contentPane.setLayout(new BorderLayout());
    contentPane.add(paymentPanel, BorderLayout.LINE_START);

有关布局管理器的更多信息,请访问:A Visual Guide to Layout Managers

答案 1 :(得分:1)

您应该阅读Layout Managers,它会为您执行此操作。我建议使用GUI Builder Tool,但这可能不允许用于你的作业。

答案 2 :(得分:0)

您可以将布局设置为contentPane的null布局。

contentPane.setLayout(null);

然后您的setBounds()将完全按照您的设计工作。

注意:

如果调整包含容器的窗口大小,则使用绝对定位的容器创建容器会导致问题。