gpt4 book ai didi

未捕获 JavaFX 按键

转载 作者:行者123 更新时间:2023-11-30 11:01:09 27 4
gpt4 key购买 nike

我正在 try catch 按键事件(向上和向下翻页),但根本没有收到任何按键事件。这是相关代码:构造函数:

private MainLayout() {
imageView = new ImageView();
root = new StackPane();

root.getChildren().add(imageView);
root.setFocusTraversable(true); //no effect
//root.requestFocus(); //also no effect
registerEvents();

}

关于焦点的两行都没有效果。堆栈 Pane 直接添加到场景中。除了 Scene->StackPane->ImageView 之外没有其他节点。我能够捕获现场的关键事件,但我需要在堆栈 Pane 中捕获它们

这里是 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();
}
});

我没有看到日志输出,也没有捕获到断点。那么如何正确捕捉和处理关键事件呢?

最佳答案

与此同时,感谢 this answer,我找到了解决方案.诀窍是在 ImageView(堆栈 Pane 的子项)上 setFocusTraversable(true)。这是工作代码:

@Inject
private MainLayout(ImageProvider ip) {
this.ip = ip;

imageView = new ImageView();
imageView.setFocusTraversable(true);
imageView.requestFocus();

root = new StackPane();

root.getChildren().add(imageView);
registerEvents();
}

关于未捕获 JavaFX 按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31320018/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com