Javafx 实现上下文相关菜单栏的惯用方法?
我定义了一个Javafx 实现上下文相关菜单栏的惯用方法?,javafx,javafx-2,Javafx,Javafx 2,我定义了一个@FXML Menu editMenu,我想根据我的TreeViews中的哪个当前处于焦点位置,以及是否选择了任何TreeItems来填充它 这样做的惯用方式是什么?我还没有为TreeViews找到一个好的onFocus方法 谢谢 所有节点都有一个可注册侦听器的。此外,场景还有一个可以观察的属性 所以你可以做一些像 scene.focusOwnerProperty().addListener(new ChangeListener<Node>() { @Overri
@FXML Menu editMenu
,我想根据我的TreeView
s中的哪个当前处于焦点位置,以及是否选择了任何TreeItem
s来填充它
这样做的惯用方式是什么?我还没有为TreeView
s找到一个好的onFocus
方法
谢谢 所有
节点
都有一个可注册侦听器的。此外,场景
还有一个可以观察的属性
所以你可以做一些像
scene.focusOwnerProperty().addListener(new ChangeListener<Node>() {
@Override
public void changed(ObservableValue<? extends Node> obs, Node oldFocusOwner, Node newFocusOwner) {
// update menu based on newFocusOwner
}
});
其中
someNode
是场景图中的任意节点。所有节点都有一个可以注册侦听器的节点。此外,场景
还有一个可以观察的属性
所以你可以做一些像
scene.focusOwnerProperty().addListener(new ChangeListener<Node>() {
@Override
public void changed(ObservableValue<? extends Node> obs, Node oldFocusOwner, Node newFocusOwner) {
// update menu based on newFocusOwner
}
});
其中someNode
是场景图中的任意节点。所有节点都有一个可以注册侦听器的节点。此外,场景
还有一个可以观察的属性
所以你可以做一些像
scene.focusOwnerProperty().addListener(new ChangeListener<Node>() {
@Override
public void changed(ObservableValue<? extends Node> obs, Node oldFocusOwner, Node newFocusOwner) {
// update menu based on newFocusOwner
}
});
其中someNode
是场景图中的任意节点。所有节点都有一个可以注册侦听器的节点。此外,场景
还有一个可以观察的属性
所以你可以做一些像
scene.focusOwnerProperty().addListener(new ChangeListener<Node>() {
@Override
public void changed(ObservableValue<? extends Node> obs, Node oldFocusOwner, Node newFocusOwner) {
// update menu based on newFocusOwner
}
});
其中someNode
是场景图中的任意节点。谢谢!这是否意味着场景
对象经常更改?只需将菜单更新者
添加到当前场景
的焦点属性
就行不通了?不,场景
不会经常更改。但是如果您使用的是FXML,则可能是在控制器的initialize()
方法中执行此操作,该方法(显然)是在将FXML中定义的节点添加到场景之前调用的。如果您可以直接访问代码中的场景
,则可以使用第一个代码示例。谢谢!这是否意味着场景
对象经常更改?只需将菜单更新者
添加到当前场景
的焦点属性
就行不通了?不,场景
不会经常更改。但是如果您使用的是FXML,则可能是在控制器的initialize()
方法中执行此操作,该方法(显然)是在将FXML中定义的节点添加到场景之前调用的。如果您可以直接访问代码中的场景
,则可以使用第一个代码示例。谢谢!这是否意味着场景
对象经常更改?只需将菜单更新者
添加到当前场景
的焦点属性
就行不通了?不,场景
不会经常更改。但是如果您使用的是FXML,则可能是在控制器的initialize()
方法中执行此操作,该方法(显然)是在将FXML中定义的节点添加到场景之前调用的。如果您可以直接访问代码中的场景
,则可以使用第一个代码示例。谢谢!这是否意味着场景
对象经常更改?只需将菜单更新者
添加到当前场景
的焦点属性
就行不通了?不,场景
不会经常更改。但是如果您使用的是FXML,则可能是在控制器的initialize()
方法中执行此操作,该方法(显然)是在将FXML中定义的节点添加到场景之前调用的。如果您可以直接访问代码中的场景
,则可以使用第一个代码示例。