java - FlowLayout 不与周围的 JScrollPane 一起流动

标签 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);

但是,当我将面板放在只有垂直滚动的滚动 Pane 中时:

    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);

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

最佳答案

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

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

关于java - FlowLayout 不与周围的 JScrollPane 一起流动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5735577/

相关文章:

java - 关于java中的双键并发hashmap

java - 如何使用带有名称冲突的 maven-jaxb2-plugin 映射 wsdl

java - 光束 : Failed to serialize and deserialize property 'awsCredentialsProvider

java - 同时设置jtextfield textlimit和大写

java - 从java创建新的word文档

java - 如何在 JPanel 数组中使用 JCheckbox 数组

java - Java Swing 中具有设置像素高度的项目的可滚动列表

java - 如何测量 Java 代码库中的测试密度?

java - 更改 AbstractTableModel 的列名称

java - 如何在按下按钮时添加不同类别的面板