为什么最后添加到容器的按钮占据整个面板?

时间:2013-10-24 07:25:34

标签: java swing

我尝试将一系列按钮添加到框架的容器中。但我发现添加到容器中的最后一个按钮总是占据整个屏幕而不是正确的位置。我该如何解决这个问题?

以下是用于添加这些按钮的代码:

    for(int i = 0; i < n; i++)
    {
        button[i] = new JButton();
        container.add(button[i]);
        button[i].setText(NAME[i]);
        button[i].setBounds(WIDTH-OFFSET_EDGE-bd.w, OFFSET+i*(bd.h+bd.gap), bd.w, bd.h);
        button[i].addActionListener(handler);
        button[i].setVisible(true);
    }

容器如下:

Container container = this.getContentPane();

主类是JFrame的子类:

public class SimpleTextDemo extends JFrame

现在我的解决方案是使用一个不可见的额外按钮,以便有用的按钮位于正确的位置。但似乎这种方法 QUITE 愚蠢......

2 个答案:

答案 0 :(得分:3)

JFrame的默认布局为BorderLayout。如果向JFrame添加按钮,它将占据整个容器。使用setLayout方法更改布局。

答案 1 :(得分:1)

在java中,默认布局设置为容器 BorderLAyout() 要正确添加它们,您必须明确提及要添加的按钮的位置。您添加的所有这些按钮都将添加到中心。最后,所有的'都会重叠。为避免这种情况,您可以为其提供CENTEREASTWESTNORTHSOUTH等职位。

仅显示最后一个按钮的原因是所有'都重叠了。