Frage

Ich habe mit Javafx experimentiert und wollte einige Operationen auf der Unterstruktur eines Schiebereglers ausführen, z. Informationen basierend auf der Position und dem Wert des Schiebereglers selbst. Ist es möglich, auf diese Unterkonstruktion zuzugreifen und einige grundlegende Informationen dazu zu erläutern?

War es hilfreich?

Lösung

Slider ist ein regulärer Javafx -Knoten, sodass Sie den Rendering -Baum dafür durchqueren können. Subnoden können beispielsweise durch StyleClass identifiziert werden. Siehe nächstes Beispiel, das die Schiebereglerstruktur druckt. Vom Knoten mit Style-Class-Daumen können Sie die Bildschirmposition des Daumens erhalten.

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);
}

Die Ausgabe wird als nächstes sein:

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top