我在 ScrollPane 中有一个 VBox,其中包含一个 HTMLEditor 和其他东西。
当我每次点击空格键时在 HTMLEditor 中键入文本时,我会在编辑器中按预期得到一个空格,但 Scrollpane 也会向下滚动。首先,我通过将 EventFilter 添加到 Scrollpane 并使用 KEY_PRESSED 事件来解决此问题。但现在我需要 HTMLEditor 中的这个事件。
所以我的问题是:是否有任何标志告诉滚动窗格不要在 KeyCode.SPACE 上滚动,或者有没有办法绕过滚动窗格将输入焦点/键事件仅路由到 HTMLEditor?或者一种仅在滚动窗格上过滤此事件的方法?
您也可以使用 javafx Scene Builder 重现这一点:
Scrollpane->VBox(比 Scrollpane 大,所以出现滚动条)->2*HTMLEditor,在窗口中预览,点击空格键。
已解决:向 HTMLEditor 添加了一个 EventFilter,它使用 KEY_PRESSED 上的 KeyCode.SPACE。
htmlEditor.addEventFilter( KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent event) {
if (event.getEventType() == KeyEvent.KEY_PRESSED){
// Consume Event before Bubbling Phase, -> otherwise Scrollpane scrolls
if ( event.getCode() == KeyCode.SPACE ){
event.consume();
}
}
}
});