1
我一直在嘗試使用JavaFX,並且我正在尋找對滑塊的子結構執行一些操作,例如獲取大小和位置的大拇指,觸發我自己的鼠標懸停事件,而不必根據滑塊本身的位置和價值推斷該信息。是否有可能以編程方式訪問此子結構並收集有關它的一些基本信息?以編程方式訪問Slider子結構
我一直在嘗試使用JavaFX,並且我正在尋找對滑塊的子結構執行一些操作,例如獲取大小和位置的大拇指,觸發我自己的鼠標懸停事件,而不必根據滑塊本身的位置和價值推斷該信息。是否有可能以編程方式訪問此子結構並收集有關它的一些基本信息?以編程方式訪問Slider子結構
Slider是一個普通的JavaFX節點,所以你可以遍歷它的渲染樹。例如,可以通過styleClass識別子節點。請參閱下一個打印Slider結構的示例。 從具有style-class「thumb」的節點中,您可以獲得拇指的屏幕位置。
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);
}
輸出將是下一個:
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
完美的作品,謝謝! – user713850