想要在JScrollPane里面加入大量横排摆放的按钮,数量很多,需要滚动条浏览
框架:
JPanel panel = new JPanel(null);
JScrollPane pane = new JScrollPane();
// pane嵌入了panel,且能正常显示panel里面的组件
已经在窗口尺寸被改变事件的监听器中加入如下代码:
for(JButton button: buttons){
button.setSize(pane.getWidth(),List_Button_Height); // List_Button_Height是每个按钮的高度,每个按钮的宽度固定,为panel的宽度
panel.setSize(pane.getWidth(),
(Folder_JSON_Array.toArray().length + File_JSON_Array.toArray().length) * List_Button_Height);
//Folder_JSON_Array.toArray().length + File_JSON_Array.toArray().length是按钮的数量
System.out.println("pane height=" + pane.getHeight());
System.out.println("panel height=" + panel.getHeight()); // 输出panel高度和JScrollPane的高度。
}
pane height=417
panel height=560
pane height=417
panel height=560
pane height=417
panel height=560
这是更改窗口大小的时候输出的内容(截取了一部分),可知panel的高度是固定的(因为按钮数量一定),但我调整窗口高度(JScrollPane的高度随之变化),让JScrollPane的高度小于panel的高度,但发现这个时候并没有在右侧出现垂直方向的滚动条
反复调试无法修复
在按钮总体占据的高度超过JScrollPane高度(约等于窗口高度)的时候右侧出现滚动条,如图所示:
pane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
设置垂直滚动条