java - 面板上的滚动窗格不允许滚动按钮
问题描述
我有一个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
)并进行自己的绘图。
解决方案
流布局最初从左到右添加组件。当您禁用水平滚动条时,按钮变得不可见。我的建议是有一个盒子布局来放置按钮从上到下布局。
panel.setLayout(new javax.swing.BoxLayout(panel, javax.swing.BoxLayout.Y_AXIS));
推荐阅读
- javascript - 如何将数据从 app.component 传递给 ionic 中的子组件或其他组件
- javascript - 如何复制特定的 imdb ID 并将其添加到另一个状态?
- c++ - 下面的代码是否可能存在内存泄漏?
- python-3.x - TypeError: int() 参数必须是字符串、类似字节的对象或数字,而不是“列表”(Python3.6)
- javascript - Math.pow 在 calc 中返回 0
- android - 如何在 ionic 2 中实现 In App Purcharse?
- javascript - For循环和2个数组
- spring - Spring:如何从数据库中显示百里香中的图像
- php - 调用未定义的方法 Illuminate\Database\Query\Builder::appends() 错误
- javascript - 无法 console.log 获取结果