我有一个像这样创建的 JPanel
JPanel statsKeysPanel = new JPanel(new MigLayout("insets 0", "[]", ""));
并填充动态数量的相互堆叠的 JLabel。举个例子:
for(int i = 0; i < 30; i++) {
statsKeysPanel.add(new JLabel("" + i + " key value"), "wrap");
}
然后我像这样创建并添加滚动条
JPanel panel = new JPanel(new MigLayout("insets 0", "[center][][center][]", "[][]"));
final JScrollPane keysScroller = new JScrollPane(this.statsKeysPanel, ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
keysScroller.setMaximumSize(new Dimension(100, 300));
panel.add(keysScroller, "cell 0 1");
应用了最大值 300,但 30 个 JLabel 中不适合 300px 的 JLabel 中的 15 个被隐藏,并且滚动不起作用。我究竟做错了什么? (下图)
最佳答案
final JScrollPane keysScroller = new JScrollPane(this.statsKeysPanel, ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
为什么水平和垂直滚动条都使用NEVER
?我认为这会阻止出现滚动条。
我通常不设置任何一个属性,只是让滚动 Pane 确定何时显示滚动条。有时我使用 ALWAYS
为滚动条保留空间。
关于java - JPanel 不在 JScrollPane 中滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26319408/