如何在JavaFX中正确处理子级焦点?

时间:2018-07-13 13:32:37

标签: java javafx javafx-8

我在处理孩子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键遍历该节点时,该节点似乎已聚焦,但按下该背景时,背景根本不会改变。那么,处理儿童焦点问题的正确方法是什么?

0 个答案:

没有答案