JScrollPane:JPanel中的自动滚动

时间:2016-12-11 00:03:47

标签: java swing layout jscrollpane

我知道有很多类似的问题,但不幸的是,它们都是关于在TextArea中自动滚动scrollBar

我使用JScrollPane来模拟JList:我使用JPanelsJScrollPane添加小GridLayout,并且它们会正确堆叠。

我希望滚动条跟随最后添加的元素(向下),但我无法让它工作。

我尝试调整Text的一些答案,例如:

.autoScrolls(true);

JScrollBar vertical = scollPan.getVerticalScrollBar();
vertical.setValue( vertical.getMaximum() );

甚至一个关于更改updatePolicy的内容,但是对于未绑定到文本区域的JScrollPane没有任何效果,我只能手动滚动它。

vertical.setValue( vertical.getMaximum() );

确实做了一些事情,它向下滚动栏,但只是大约2/3,只是因为我在调用后在scrollPane上添加了.revalidate()

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

在向面板添加组件后,您需要执行revalidate()repaint()以确保调用布局管理器。

JScrollBar vertical = scollPan.getVerticalScrollBar();
vertical.setValue( vertical.getMaximum() );

然后将上面的代码包装在SwingUtilities.invokeLater()中,以确保代码被添加到Event Dispatch Thread (EDT)的末尾,以便在所有布局代码之后执行。