【发布时间】:2014-06-17 05:36:48
【问题描述】:
我正在寻找 JavaFX 中的功能,我可以在其中“禁用或解除”请求的焦点。
这是我的程序截图:Screenshot
每个单元格都填充了一个事件处理程序(onMouseEntered 和 onMouseExited),在每个 onMouseEntered 函数中,我必须像这样请求焦点:
label.requestFocus()。我需要这样做,因为我正在使用 KeyEvents 来更改单元格的内容。
它工作正常,但有一个错误:当我移出scrollPane时,最后输入的单元格上仍然存在请求的焦点。
如何解决这个问题,而不要求关注 Scrollpane 周围的所有内容来修复此错误?是否有一个功能,我可以在其中解除请求的焦点,所以在退出单元格后,它会解除焦点。
最好的问候,
我的代码:
arbeitetLabel.setOnMouseEntered(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent mouseEvent) {
arbeitetLabel.requestFocus();
arbeitetLabel.setOnKeyPressed(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent keyEvent) {
// Do some keyEvent Stuff
}
});
}
});
arbeitetLabel.setOnMouseExited(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent mouseEvent) {
// Dismiss the requested Focus here?
}
});
【问题讨论】:
-
据我所知,当前窗口中必须有焦点。为什么在父面板上设置焦点不起作用?
-
哈哈,太好了,可以了!谢谢!所以我正在使用它:
arbeitetLabel.getParent().requestFocus()