如何在PAGE_END中使用BorderLayout定位两个JButton而不重叠它们?

时间:2013-08-03 19:56:21

标签: java swing positioning jbutton border-layout

所以我希望按钮Select位于按钮Back上方,我不希望它们相互重叠。但是当我将它们设置为PAGE_END时,它们会重叠。我该如何解决这个问题?

以下是问题的代码:

public void methodName() {
    JPanel controls = new JPanel(new BorderLayout(5,5));
    final CardLayout cl = new CardLayout();
    final JPanel panel = new JPanel(cl);
    controls.add(panel);
    this.getContentPane().setLayout(new FlowLayout(FlowLayout.LEADING));        
    list = new JList<Object>(objectName);
        list.setVisibleRowCount(7);
        select = new JButton("Select");
        back = new JButton("Back");
        select.addActionListener(this);
        controls.add(new JScrollPane(list));
        controls.add(select, BorderLayout.PAGE_END);
        controls.add(back, BorderLayout.PAGE_END);
        controls.setBorder(new EmptyBorder(25,25,0,0));
        add(controls);
        refreshFrame();
}

以下是添加但重叠时的样子:

The problem (Overlapping)

这就是我想要的样子:

This is what it should look like

有什么想法吗?

提前致谢!

2 个答案:

答案 0 :(得分:3)

使用JButtons像这样将JPanel放在新的GridLayout

JPanel basePanel = new JPanel(new GridLayout(0, 1, 0, 3));
basePanel.add(select);
basePanel.add(back);
controls.add(basePanel, BorderLayout.PAGE_END);

GridLayout可以在constructor中的按钮之间提供垂直间隙,如问题所示

答案 1 :(得分:2)

使用gridLayout(2,1)创建一个新的jpanel,然后将两个按钮添加到jpanel,然后将Jpanel添加到Jframe