FlowLayout没有流动JScrollPane

时间:2011-04-20 19:25:12

标签: java swing jpanel jscrollpane flowlayout

我在使用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);

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

1 个答案:

答案 0 :(得分:4)

在这里查看我的答案:How can I let JToolBars wrap to the next line (FlowLayout) without them being hidden ty the JPanel below them?

我已经在这种情况下使用了自定义Flow Layout。只需将其插入即可在卷轴窗格中进行包装。