JavaFXのScrollPaneについて質問です。
画面上に表示しているScrollPaneの縦スクロール位置を、ユーザの操作ではなく、プログラム側で変更するには、どうすれば良いでしょうか?
(※説明の為に、変数名は実際のプログラムから一部変更しています。)
私がJavaFXで現在作成しているアプリケーションでは、縦スクロールのScrollPane(scroll)の中にFlowPane(listField)があります。
ユーザの操作によって、このlistFieldの中にGridPaneの表(list)を表示しています。
しかしこれだと、新しいlistをlistFieldの中に表示する度に、毎回scrollが一番上にスクロールした状態になってしまいます。
その為、scrollの縦スクロール位置を一旦変数vValueに入れ、それからlistFieldの中に新しく作ったlistを表示し、最後にscrollの縦スクロール位置をvValueに合わせれば良いと考えました。
下記プログラムの通り、getVvalueメソッドでscrollの縦スクロール位置は取得出来ました。
Java
1double vValue=scroll.getVvalue(); 2listField.getChildren().clear(); //listField内全削除 3GridPane list=createList(); //list生成 4listField.getChildren().addAll(list); //listFieldにlistを表示 5scroll.setVvalue(vValue); //新listのスクロール位置を旧listと同じ位置に変える
しかし、setVvalueメソッドを使っても、scrollの縦スクロール位置を画面上で移動させる事が出来ませんでした。
確認してみた所、setVvalueメソッドの後は、listの縦スクロール位置の数値自体は変化していました。
調べた所、恐らく同様の質問をされていると思われる下記ページが見付かりました。
参考サイト
英語な事もあり詳しくは分かりませんでしたが、ScrollPaneのlayoutメソッドというのを使ってから、setVvalueメソッドで縦スクロール数値を指定すべきだという意味だと解釈しました。
Java
1double vValue=scroll.getVvalue(); 2listField.getChildren().clear(); //listField内全削除 3GridPane list=createList(); //list生成 4listField.getChildren().addAll(list); //listFieldにlistを表示 5scroll.layout(); //????? 6scroll.setVvalue(vValue); //新listのスクロール位置を旧listと同じ位置に変える
しかしこれでも、scrollの縦スクロール位置が画面上で移動する事はありませんでした。
どの様にすれば縦スクロール位置を変更出来るでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。