1

我想知道如何从 Scene 对象添加监听器或绑定 cursorProperty() 方法。我正在尝试检测当前光标类型正在调整场景的大小。

4

1 回答 1

0

不是最干净的方法,但它帮助我找出发生了什么:

@Override
public void start(final Stage stage) {

    // .. initialize scene

    addCursorChangeListeners(mainPane);
    scene.cursorProperty().addListener(new ChangeListener<Cursor>() {
        @Override
        public void changed(final ObservableValue<? extends Cursor> observable, final Cursor oldValue, final Cursor newValue) {
            LOGGER.info("Cursor changed for " + scene + " from: " + oldValue + " to: " + newValue);
        }
    });
}

private void addCursorChangeListeners(final Parent parent) {
    for (final Node child : parent.getChildrenUnmodifiable()) {
        child.cursorProperty().addListener(new ChangeListener<Cursor>() {
            @Override
            public void changed(final ObservableValue<? extends Cursor> observable, final Cursor oldValue, final Cursor newValue) {
                LOGGER.info("Cursor changed for " + child + " from: " + oldValue + " to: " + newValue);
            }
        });
        if (child instanceof Parent) {
            addCursorChangeListeners((Parent) child);
        }
    }
}

Node后面添加的s这里不考虑。

于 2013-10-19T19:31:23.307 回答