Question

J'ai fait des expériences autour avec JavaFX et je cherchais à effectuer certaines opérations sur la sous-structure d'un curseur, par exemple obtenir la taille et la position du pouce, le feu de ma propre souris sur les événements, etc., sans avoir d'extrapoler ces informations en fonction de la position et la valeur du curseur lui-même. Est-il possible d'accéder à ce programme sous-structure et glaner quelques informations de base à ce sujet?

Était-ce utile?

La solution

Slider est un nœud régulier JavaFX, de sorte que vous pouvez parcourir arbre de rendu pour elle. Sous-noeuds peuvent être identifiés, par exemple, par styleClass. Voir l'exemple suivant, qui imprime la structure curseur. De nœud avec un style classe « pouce », vous pouvez obtenir la position de l'écran de base.

public class DoSlider extends Application {
@Override
public void start(Stage stage) {
    Slider slider = SliderBuilder.create().min(0).max(100).value(50).showTickLabels(true).showTickMarks(true).build();

    stage.setScene(new Scene(new Group(slider)));
    stage.show();

    traverse(slider);
}

public void traverse(Parent node) {
    for (Node subNode : node.getChildrenUnmodifiable()) {
        System.out.println(subNode.getClass().getSimpleName() + " " + subNode.getStyleClass());
        if (subNode instanceof Parent) {
            traverse((Parent)subNode);
        }
    }
}

public static void main(String[] args) {
    launch(DoSlider.class, args);
}

Sortie sera suivante:

SliderSkin slider
NumberAxis axis
Label label axis-label
LabelSkin label axis-label
Text 
Path axis-tick-mark
Path axis-minor-tick-mark
Text tick-mark
Text tick-mark
Text tick-mark
Text tick-mark
Text tick-mark
StackPane track
StackPane thumb
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top