4

コンテンツの高さが増加したときにScrollPaneコントロールを自動スクロールダウンする方法はありますか?たとえば、画面の下部(ScrollPane内)にTitledPaneがあり、それを展開すると、ScrollPaneを下にスクロールして、TitledPaneのコンテンツ全体を表示したいとします。

4

8 に答える 8

2

垂直バーまたは水平バーに値を渡す前に、現在の座標がどこにあるかをスクロールペインに伝える必要があります。

このコードは私にとってはかなりうまくいきます:

// the owner's node of your scrollPane;
titledPane.layout(); 
// the maxValue for scrollPane bar ( 1.0 it's the default value )
scrollPane.setVvalue( 1.0d ); 

スクロールペインが大きくなる場所にこれをコーディングする必要があります。たとえば、スクロールペインの内部ノードにノードを追加する場合、その子リストにリスナーを追加します。

スクロールペインの内部ノードの高さが変わる場合は、heightProperty にリスナーを追加します。

たとえば、scrollPane の内部ノードは AnchorPane であり、このペインにノードを追加するため、次のようにします。

anchorPane.getChildren().addListener( 
    ( ListChangeListener.Change<? extends Node> c ) -> {
        titledPane.layout();
        scrollPane.setVvalue( 1.0d ); 
    }
);

伸びる身長なら…

heightProperty().addListener(
    (observable, oldValue, newValue) -> {
        titledPane.layout();
        scrollPane.setVvalue( 1.0d ); 
    }
);

それでおしまい!

于 2015-11-09T14:31:00.100 に答える
2

titledPane.localToScene()との組み合わせでその動作を実現できますscrollPane.setVvalue()

1 つ目は titledPane の座標を取得することで、2 つ目は scrollPane の垂直バーの位置を設定することです。範囲は 0 ~ 1 であることに注意してください。

于 2012-10-31T12:42:35.670 に答える