JavaFX | как получить значение "getVisibleAmount ()" из ScrollPane - PullRequest
0 голосов
/ 01 мая 2020

я пытался получить значение getVisibleAmount () из ScrollPane, у которого ScrollPane есть дочерние AnchorPane и ScrollBar. в этом случае я хочу получить дочерний элемент ScrollBar из ScrollPane в функцию getVisibleAmount (). где эта функция только для компонента ScrollBar.

Я хочу применить getVisibleAmount () из дочернего ScrollPane (ScrollBar) к различным ScrollBar отдельно.

извините, мой английский sh это не очень хорошо , может быть, эта картина может помочь, что я пытаюсь достичь. enter image description here

Любое решение будет оценено. спасибо.

1 Ответ

1 голос
/ 01 мая 2020

Вот метод получения видимой суммы от ScrollPane ScrollBar:

static double getScrollBarVisibleAmount(ScrollPane scrollPane, Orientation orientation) {
    for (Node node : scrollPane.lookupAll(".scroll-bar")) {
        if (node instanceof ScrollBar) {
            ScrollBar scrollBar = (ScrollBar) node;
            if (scrollBar.getOrientation() == orientation) {
                return scrollBar.getVisibleAmount();
            }
        }
    }
    return -1.0;
}

Вы можете использовать его следующим образом:

double amount = getScrollBarVisibleAmount(myScrollPane, Orientation.VERTICAL);

Вам нужно точно знать, когда вызывать этот метод, так как ScrollPane может не отображаться во время вызова. Также будет легче отслеживать изменения, если вы назначите ChangeListener<Number>:

scrollBar.visibleAmountProperty().addListener((observable, oldValue, newValue) -> System.out.println("New visible amount: " + newValue));
...