[英]Vertical scrollbar setValue always sets it to 90
我正在保存兩個滾動條的狀態並使用以下兩種方法加載它:
private void saveScrollPosition() {
scrollY = scrollPane.getVerticalScrollBar().getValue();
scrollX = scrollPane.getHorizontalScrollBar().getValue();
System.out.println("Saved: " + scrollX + "," + scrollY);
}
private void loadScrollPosition() {
scrollPane.getVerticalScrollBar().setValue(scrollY);
scrollPane.getHorizontalScrollBar().setValue(scrollX);
System.out.println("Should load: " + scrollX + "," + scrollY);
System.out.println("Loaded: " + scrollPane.getHorizontalScrollBar().getValue() + "," + scrollPane.getVerticalScrollBar().getValue());
}
水平滾動條正在做它應該做的事情,但垂直總是設置為 90。
安慰:
已保存:185,882
應加載:185,882
已加載:185,90
在論壇中找到了一個技巧來創建一個新的 Runnable 方法並開始它
SwingUtilities.invokeLater(doScroll);
但它沒有成功。
我想知道我做錯了什么......
我必須先更新我的 contentPane。 然后垂直滾動條更新為正確的值。 Idk 為什么它與水平滾動條一起使用......
前:
loadScrollPosition();
contentPane.updateUI();
后
contentPane.updateUI();
loadScrollPosition();
希望這可以幫助
我只是有同樣的問題。 如果有人仍然有這個問題,這是我的情況:
我的JScrollPane
每次都會新建,此時VerticalScrollBar
的最大值設置為 100,因此它不能接受更高的值。
我通過在構造新的JScrollPane
之前保存最大值來修復它,然后將其設置為新的對象。
if (scrollPane != null) {
scrollPos = scrollPane.getVerticalScrollBar().getValue();
maxScrollPos = scrollPane.getVerticalScrollBar().getMaximum();
}
scrollPane = new JScrollPane(panel);
if (scrollPos != null && maxScrollPos != null) {
scrollPane.getVerticalScrollBar().setMaximum(maxScrollPos);
scrollPane.getVerticalScrollBar().setValue(scrollPos);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.