スクロール ペインに含まれるテーブルでいくつかの作業を行っています。私が呼び出している関数は、テーブルに対して操作を実行してからテーブルを再描画します。これにより、垂直スクロール バーの位置が変更されます。関数の後にスクロールバーの初期位置を復元する方法を見つけようとしています。ここに私がこれまでに持っているもののサンプルがあります:
public void lineCopy(){
scrollPosition = jScrollPane1.getVerticalScrollBar().getValue;
//Main body of tableCopy function here, including call to
//getNewTable() which gets the new table
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
jScrollPane1.getVerticalScrollBar().setValue(scrollPosition);
System.out.println("Run Later Here");
}
});
System.out.println("End of copy function");
}
問題は、スクロール バーが関数の前の値にリセットされないことです。通常、以前よりもウィンドウを下にスクロールします (たとえば、関数の前に 200 行目がウィンドウの上部にあった場合、250 行目はウィンドウの一番上にあります)。上から後)。
私が知っていることは次のとおりです。実際、invokeLater は、追加したシステム出力行に基づいて後で呼び出しています。また、setValue(scrollPosition) ではなく setValue(0) に設定すると、毎回機能するため、setValue 関数が機能していることもわかっています。
その他の情報: ビューポートの取得/設定を使用して同様のコードを試したところ、同様の結果が得られました。また、行の値のタイプ (行列と定数) に基づいて、高さが異なる行もあります。
助けてくれてありがとう