4

我在使用 FlowLayout 的 JPanel 上有一堆按钮。它看起来真的很好。当按钮到达面板的右侧时,它们会在新行上开始创建一个漂亮的二维网格。

这是代码:

    Container cp = getContentPane();
    JPanel panel = new JPanel();
    panel.setLayout(new FlowLayout());
    for (int i = 0; i < 20; i++)
        panel.add(new JButton("Button " + i));
    cp.add(panel);

但是,当我将面板放在仅垂直滚动的滚动窗格中时:

    Container cp = getContentPane();
    JPanel panel = new JPanel();
    panel.setLayout(new FlowLayout());
    for (int i = 0; i < 20; i++)
        panel.add(new JButton("Button " + i));
    JScrollPane pane = new JScrollPane(
            panel,
            ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
            ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
    cp.add(pane);

这些按钮只显示在一行中(我什至看不到右边的按钮)。我还是想让他们包起来。这里发生了什么?顺便说一句,我只需要显示垂直滚动条而不显示水平滚动条。我希望按钮在到达右端时换行到新行。

4

1 回答 1

4

在这里查看我的答案:如何让 JToolBars 换行到下一行(FlowLayout)而不会将它们隐藏在它们下方的 JPanel 中?

在这种确切情况下,我使用了一个自定义流布局。只需将其插入,它甚至可以包裹在滚动窗格中。

于 2011-04-20T19:40:02.040 回答