按钮没有显示在JPanel上

时间:2014-11-27 19:44:12

标签: java swing user-interface

我有以下部分代码:

    buttonPanel = new JPanel();
    back = new JButton("Back");
    close = new JButton("Close");
    addCruise = new JButton("Add new Cruise");
    removeCruise = new JButton("Remove Cruise");

    buttonPanel.add(close);
    buttonPanel.add(back);
    buttonPanel.add(addCruise);
    buttonPanel.add(removeCruise);

    contentPane.add(buttonPanel);
    Frame1.add(buttonPanel, BorderLayout.SOUTH);

运行上面的代码后,所有按钮都显示在框架的南边,除了"关闭"按钮。我还希望按钮跨越南部的整个宽度(每个按钮之间没有空格)但是,我不确定如何实现流程布局,并且还使用边框布局以确保按钮显示在底部。

有解决方法吗?

2 个答案:

答案 0 :(得分:1)

您在jFrame中有布局。 也将新布局添加到jPanel。

答案 1 :(得分:1)

  

运行上面的代码后,除“关闭”按钮外,所有按钮都显示在框架的南边。

很难说没有合适的MCVE,为什么会出现“关闭”按钮。此外,请注意不要使用SOUTH常量,我们应根据标准/国际化/语言导向交易使用PAGE_END。来自How to Use BorderLayout教程:

  

在JDK 1.4版之前,各个领域的首选名称是   不同的,从指南针的点(例如,   最高区域的BorderLayout.NORTH到word的版本   我们在示例中使用的常量。我们的例子使用的常量是   首选,因为它们是标准的,并使程序可以适应   具有不同方向的语言。


  

我还希望按钮跨越南部的整个宽度(每个按钮之间没有空格)

对于GridLayout(链接到教程)而言,这听起来像是一行而不是FowLayout


  

我不确定如何实现流程布局,还使用边框布局以确保按钮显示在底部。

您的代码似乎足够接近,但这看起来很可疑:

contentPane.add(buttonPanel);
Frame1.add(buttonPanel, BorderLayout.SOUTH);

不要将组件添加到不同的容器中。如果contentPane是框架的内容窗格,那么第一行就足够了。如果不是那么第一行就没用了。