【发布时间】:2015-07-09 14:09:57
【问题描述】:
我正在尝试捕获按键事件(向上和向下翻页),但根本没有收到任何按键事件。以下是相关代码: 构造函数:
private MainLayout() {
imageView = new ImageView();
root = new StackPane();
root.getChildren().add(imageView);
root.setFocusTraversable(true); //no effect
//root.requestFocus(); //also no effect
registerEvents();
}
关于焦点的两条线都没有效果。堆栈窗格直接添加到场景中。 除了 Scene->StackPane->ImageView 没有其他节点。 我能够捕捉现场的关键事件,但我需要在堆栈窗格中捕捉它们
这里是registerEvents(),所有其他事件都被很好地捕获!:
private void registerEvents() {
OnScroll onScroll = new OnScroll();
root.setOnScroll(onScroll);
OnResize onResize = new OnResize();
root.heightProperty().addListener(onResize);
root.widthProperty().addListener(onResize);
OnMouseDown onMouseDown = new OnMouseDown();
root.setOnMousePressed(onMouseDown);
root.setOnMouseReleased((event) -> fitImage());
root.setOnDragOver((event) -> dragOver(event));
root.setOnDragDropped((event) -> dropFile(event));
root.setOnKeyPressed((event) -> {
LOG.debug("Key captured.");
if(event.getCode() == KeyCode.PAGE_UP){
imageView.setImage(ip.prev());
event.consume();
} else if(event.getCode() == KeyCode.PAGE_DOWN){
imageView.setImage(ip.next());
event.consume();
}
if(event.isConsumed()){
fitImage();
}
});
我没有看到日志输出,也没有捕获断点。那么如何正确捕捉和处理关键事件呢?
【问题讨论】:
-
考虑添加#java 标签,它会帮助您获得更多关注,并可能获得更多答案;-)
标签: java events javafx keyevent