Est-il possible de faire défiler automatiquement un contrôle ScrollPane lorsque la hauteur du contenu augmente? Par exemple, j'ai un TitledPane en bas de l'écran (à l'intérieur d'un ScrollPane) et quand je l'agrandis, j'aimerais que le ScrollPane défile vers le bas pour que je puisse voir tout le contenu du TitledPane.JavaFX scrollpane scroll down
Répondre
Vous pouvez obtenir ce comportement avec une combinaison de titledPane.localToScene()
et scrollPane.setVvalue()
Le premier est d'obtenir les coordonnées de titledPane tandis que le second est de définir la position de la barre verticale scrollpane. Notez que sa plage est comprise entre 0 et 1.
Je l'ai fait en utilisant un AnimationTimer. J'ai dû attendre 100000000 nanosecondes pour être sûr que le ScrollPane avait réagi à la Titlepane étendu.
public void scrollNodeInTopScrollPane(Node n, ScrollPane s) {
final Node node = n;
final ScrollPane clientTopScrollPane = s;
AnimationTimer timer = new AnimationTimer() {
long lng = 0;
@Override
public void handle(long l) {
if (lng == 0) {
lng = l;
}
if (l > lng + 100000000) {
if (node.getLocalToSceneTransform().getTy() > 20) {
clientTopScrollPane.setVvalue(clientTopScrollPane.getVvalue() + 0.05);
if (clientTopScrollPane.getVvalue() == 1) {
this.stop();
}
} else {
this.stop();
}
}
}
};
timer.start();
}
Vous devez indiquer à scrollpane où se trouvent les coordonnées actuelles avant de passer une valeur à la barre verticale ou horizontale.
Ce code fonctionne assez bien pour moi:
// 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);
Vous avez à coder ce où pousse votre scrollpane. Par exemple, si vous ajoutez des nœuds au nœud interne du panneau déroulant, ajoutez un écouteur à sa liste des enfants.
Si le nœud interne du panneau de configuration change de hauteur, ajoutez un écouteur à heightProperty.
Par exemple, le noeud intérieur de votre scrollpane il est un AnchorPane et vous ajoutez des nœuds à ce volet, donc comme cela:
anchorPane.getChildren().addListener(
(ListChangeListener.Change<? extends Node> c) -> {
titledPane.layout();
scrollPane.setVvalue(1.0d);
}
);
Si c'est la hauteur qui pousse ...
heightProperty().addListener(
(observable, oldValue, newValue) -> {
titledPane.layout();
scrollPane.setVvalue(1.0d);
}
);
C'est tout!
Vous pouvez bind
la propriété ScrollPane
vvalue
avec le heightProperty
du conteneur interne. Par exemple, si vous avez un VBox
dans votre ScrollPane
:
scrollPane.vvalueProperty().bind(vBox.heightProperty());
- 1. Javafx ScrollPane écouter l'événement clavier (touche enfoncée)
- 2. Fade in on scroll down
- 3. Sliding Down TableView dans JavaFx
- 4. zoom JavaFX, faites défiler dans ScrollPane
- 5. Déplacement d'un composant à partir de ScrollPane - JavaFX
- 6. JavaFX ScrollPane ne remplit pas son volet parent
- 7. JavaFX 2.1 Change ScrollPane Taille de la barre de défilement
- 8. JavaFX ScrollPane - accélère l'effet de balayage sur le périphérique tactile
- 9. JavaFX charger un nouveau fichier FXML dans un scrollpane
- 10. JavaFX ScrollPane ne correspond pas à la largeur
- 11. java.lang.NoClassDefFoundError: JavaFX/scène/contrôle/ScrollPane $ 1 (nom incorrect: JavaFX/scène/contrôle/ScrollPaned1)
- 12. Fit FlowPane dans ScrollPane
- 13. java scrollpane avec flowlayout
- 14. jquery scrollpane ne fonctionne pas
- 15. un JTextArea rétractable avec scrollpane
- 16. Scroll 2 listview en même temps
- 17. SwingBuilder: scrollPane
- 18. Jquery ScrollPane
- 19. jscrollpane block scroll parent
- 20. Libgdx Scene2d Table et Scrollpane bug?
- 21. JavaFx, FXML, comment redimensionner automatiquement le contenu: Button, StackPane, Field, Scrollpane selon leurs parents
- 22. JavaFX ScrollPane - Comment utiliser une barre de défilement pour faire défiler 2 ScrollPanes?
- 23. JavaFX ScrollPane affichant des objets en dehors de la fenêtre d'affichage
- 24. JAVAFX 2.0 Comment puis-je modifier dynamiquement le contenu d'un scrollPane?
- 25. JFreeChart dans scrollpane
- 26. scrollpane à la figure
- 27. Java ScrollPane/JPanel
- 28. CSS jQuery Scrollpane Problème
- 29. Obtenir l'enfant de scrollpane
- 30. Personnalisation AWT ScrollPane
J'ai au sujet d'un problème similaire. Je dois monter/descendre le titre. Comment puis-je faire? Principalement, je veux mettre en œuvre les fonctionnalités de la fenêtre de sortie IntelliJ. Cette fenêtre peut être déplacée vers le haut/bas avec la souris. – alhelal