日期:2014-05-20  浏览次数:20756 次

关于把Panel放到JScrollPane里面,实现垂直滚动的问题!
把组件放到一个Panel上面,想达到FlowLayout的效果,让组件从左到又排列,到边界了就自动换行!
但组件太多,整个画面都没办法把所有组件显示出来,所以我想把这个Panel放到JScrollPane里面,用滚动条来显示所有组件,但放进去的结果是,窗口的宽度被认为是无限的,组件都摆成很长的一行了。两边的都看不见了,窗口只显示中间那部分组件了!
各位大哥,麻烦帮帮忙!我怎样保留JScrollPane的垂直滚动效果,而去掉水平的滚动? 
如果单纯使用HORIZONTAL_SCROLLBAR_NEVER,只是不显示滚动条而已,但效果还是在的。

------解决方案--------------------
在practicePanel.add(jScrollPane1)前加上如下几句:

int lines = length/50; //其中50是你创建JTextArea时的列数。
Dimension dim = ta.getPreferredSize();//获得ta大小

//将panel的宽设置为ta的宽,高为所有Label加在一起的高度
panel.setPreferredSize(new Dimension(dim.width,lines×ta.getFont().getSize()));
//将jScrollPanel设置成和jScrollPane2一样
jScrollPane1.setPreferredSize(jScrollPane2.getPreferredSize());