滚动条用VERTICAL_WRAP覆盖JList的最后一行
问题描述:
我想水平地在一行上排列JList
,并让它只能水平滚动。我发现list.setLayoutOrientation(JList.VERTICAL_WRAP);
如果有足够的物品,它会很好地工作。但是,当列表需要滚动时,滚动条会覆盖列表的最后(也是唯一)一行,所以根本看不到它。我怎样才能防止这一点?滚动条用VERTICAL_WRAP覆盖JList的最后一行
我的测试代码:
JList<String> list = new JList<>("TIVFBJPAVUOHCVINPNYLMSMNNDUSHVSWUYUSNZXTYTXJMJPTISAVVYHOPBFIAXSUUQYYPVGAKEEWOTRCBWQWRXQTYJLCTTHTXPMZWDLQRRUZJSVWDMLYNRUDZXRTEJWAZUOBQCWNCYEPVCPXVWOGVZPOEKPWZZFDGZZGXPBFZQQVKFIXCYFTHRPJJMOYISEUCUTJGZQI".split("[A-D]"));
list.setLayoutOrientation(JList.VERTICAL_WRAP);
list.setVisibleRowCount(1);
frame.add(new JScrollPane(list), BorderLayout.NORTH);
其结果是:
答
强制滚动窗格以包括在其大小计算水平滚动条:
JList<String> list = new JList<String>(...);
list.setLayoutOrientation(JList.VERTICAL_WRAP);
list.setVisibleRowCount(1);
JScrollPane scrollPane = new JScrollPane(list);
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
frame.add(scrollPane);
+0
不能相信我之前没有想到这一点。谢谢。 – ricky3350
滚动条可没有被包含在preferredSize计算中(如'JScrollPane '会以其他方式补偿)。考虑使用不同的布局管理器 – MadProgrammer