我在处理孩子Node
的焦点时遇到问题。我有一个自定义布局,在其层次结构中有一堆节点,我想将其子级(特别是Pane
)设置为focusTraversable
或可以集中精力于鼠标按下(像一个按钮控件)。我真正想做的只是在聚焦时更改孩子的背景颜色,这是我的代码:
Pane pane = new Pane();
pane.getStyleClass().setAll("container");
pane.setFocusTraversable(true);
pane.setOnMousePressed(event -> {
if (!pane.isFocused() && pane.isFocusTraversable()) {
pane.requestFocus();
// Test if this node is currently focused
System.out.println(pane.isFocused());
}
});
CSS更改窗格的-fx-background-color
:
.container {
-fx-background-color: red;
}
.container:focused {
-fx-background-color: blue;
}
尽管使用TAB
键遍历该节点时,该节点似乎已聚焦,但按下该背景时,背景根本不会改变。那么,处理儿童焦点问题的正确方法是什么?