首页 > 解决方案 > 面板上的滚动窗格不允许滚动按钮

问题描述

我有一个JPanel包含很少或很多按钮的按钮,如果按钮多于无法显示,我需要能够滚动垂直显示的按钮。当我添加 aJScrollPane时,即使按钮明显重叠JPanel.

如何创建滚动窗格:

scrollPane = new ScrollPane(this);
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scrollPane.setBorder(BorderFactory.createLineBorder(Color.black, 2));

如何添加按钮:

for (int i = 0; i < 20; ++i)
{
    panel.add(new TestButton("example." + i, "example"));
}

该面板被添加到另一个正在使用的面板上FlowLayout。如果重要的话,按钮是自定义绘制的按钮(它们扩展JButton),它们会改变自己的大小(使用setPreferredSize)并进行自己的绘图。

标签: javaswing

解决方案


流布局最初从左到右添加组件。当您禁用水平滚动条时,按钮变得不可见。我的建议是有一个盒子布局来放置按钮从上到下布局。

panel.setLayout(new javax.swing.BoxLayout(panel, javax.swing.BoxLayout.Y_AXIS));

推荐阅读