我在编写JScrollPane
来设置可滚动的JPanel
,其中包含JTextPane
和JTable
。把JScrollPane滚动条的栏放在XXX处,不要“闪烁”
当我加载框架时,我用一个非常长的文本初始化JTextPane
,然后滚动条向下移动直到文档结束。
我想让这个滚动条位于文档的顶部。所以我把我的滚动条的值设置为0,则文字加载后:
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
myScrollPane.getVerticalScrollBar().setValue(0);
}
});
它正常工作(即我顶得上的滚动条),但呈现的行为是很丑陋。现在它加载文本,显示结束(滚动条在文本窗格的底部),然后立即(几毫秒,但仍然可见)向上移动以获得顶部的滚动条。由此产生的效果是用户的“闪光”,这是非常不愉快的。每次重新加载整个文档时,我都有同样的问题。
我怎么能避免这种情况?
谢谢。
直到将滚动条设置为零后,才设置frame.setVisible(true)? –
但是,如果我的所有组件都已经实例化并且只想“重新加载”整个文档,则它不起作用。例如:所有框架都是可见的,我点击一个JButton,用“HELLO”代替所有的“hello”单词(在文档中)。该文档在我的文本窗格中重新编写,但滚动条再次位于其底部。 :/ 谢谢你们。 –
另请参阅此[备选](http://stackoverflow.com/a/11299764/230513)。 – trashgod