如何在带有边框的南面板中放置2个按钮?

时间:2014-09-23 05:49:44

标签: java swing jpanel layout-manager

我试图将它们放在南边,两个按钮并排放置,但我该怎么办呢? 如果我这样离开它们,但按钮会自动放在顶部。

JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();

JButton button1 = new JButton("Button 1");

panel1.add(button1);

JButton test2 = new JButton("Button 2");

panel1.add(button2);

另外,如何在底部面板周围放置一个带有两个按钮的边框?

2 个答案:

答案 0 :(得分:4)

我们的Frame将有两个面板,例如topPanel,bottomPanel。 TopPanel将位于NORTH,BottomPanel将位于SOUTH。

在主框架上,我们使用BorderLayout,我们将两个面板放在NORTH,另一个放在SOUTH。

在BottomPanel上,我们将从中心开始使用FlowLayout。因此,您添加到底部面板的组件将从中心开始对齐。

enter image description here

private void creteUI() {
        JFrame frame = new JFrame();
        JPanel mainPanel = new JPanel(new BorderLayout());
        JPanel topPnl = new JPanel();
        JPanel btnPnl = new JPanel(new FlowLayout(FlowLayout.CENTER));

        JButton btnLeft = new JButton("Left");
        JButton btnRight = new JButton("Right");

        btnPnl.add(btnLeft);
        btnPnl.add(btnRight);

        btnPnl.setBorder(BorderFactory.createLineBorder(Color.BLACK));

        mainPanel.add(topPnl, BorderLayout.NORTH);
        mainPanel.add(btnPnl, BorderLayout.SOUTH);

        JLabel label = new JLabel("Top Panel");
        topPnl.add(label);

        frame.add(mainPanel);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

答案 1 :(得分:2)

panel2的布局管理器设置为BorderLayout ...

panel2.setLayout(new BorderLayout());

panel1添加到BorderLayout.SOUTH位置...

panel2.add(panel1, BorderLayout.SOUTH);

有关详细信息,请参阅Laying Out Components Within a Container

您可以使用Border

panel1指定setBorder
pane2.setBorder(BorderFactory.createLineBorder(Color.black));

有关详细信息,请参阅How to Use Borders