我使用以下代码滚动到JList的末尾.我在包含JList的窗口上设置setVisible时以及在向JList添加项目时使用它.
int lastIndex = getMyList().getModel().getSize() - 1;
if (lastIndex >= 0) {
getMyList().ensureIndexIsVisible(lastIndex);
}
Run Code Online (Sandbox Code Playgroud)
问题是,在第一次调用setVisible时,JList无缘无故地向上滚动几个项目.如果我然后调用setVisible(false),然后调用setVisible(true),则JList会像它应该的那样滚动到底部.我注意到的一件事是,当我打开一个窗口时,它的一些组件似乎在几分之一秒内重新排列.所以我猜这个问题可能就是这个问题.
所以当我打开其中一个窗口时,我按下了"打印屏幕",你可以看到,当窗口最初打开时,它底部的组件甚至都不可见(表情符号和按钮).这是窗口在"完全打开"时的样子,以及它在完全打开前几分之一秒的样子.
窗口打开后的外观(您可以看到滚动条不在底部)

在调用setVisible()后,当我打开它时,窗口看起来如何

所以任何人都知道为什么布局在窗口打开时会发生变化,以及如何在首次打开时让我的JList滚动到底部?
| 归档时间: |
|
| 查看次数: |
1567 次 |
| 最近记录: |