【发布时间】:2017-02-07 09:04:10
【问题描述】:
这是我在 JavaFX 中为 ctrl+c 组合设置操作的代码。当专注于 TextField 命令行时,它不起作用。为什么?
public void setCtrlC() {
command_line.getScene().getAccelerators().put(new KeyCodeCombination(KeyCode.C, KeyCombination.CONTROL_ANY),
new Runnable() {
@Override
public void run() {
LOGGER.debug("CTRL+C pressed");
try {
if (tab_toradex.isSelected()) {
bw.write(3);
bw.flush();
}
if(tab_novatel.isSelected()){
bw2.write(3);
bw2.flush();
}
} catch (IOException e) {
LOGGER.debug("CTRL+C command failed");
}
}
});
}
谢谢!
【问题讨论】:
-
this question 的回答中描述了一种可能的解决方案。我不确定是否有比向场景/根添加事件过滤器更简单的解决方案。
-
Control + C(至少在 Windows 上)默认支持。您想在用户尝试复制某些文本时记录?其实在这里你想开始一个新的线程? Runnable 永远不会启动...
-
我真的不确定,但我认为文本字段控件有自己的加速器,它正在拦截你的加速器......
-
好的,现在我大概知道问题出在哪里了。 TextField 主要设置为侦听 ctrl+c 以进行“复制”,但我需要将其覆盖为侦听器以将 ctrl+c 设置为“终止进程”。
-
更新:每次我按下 SEND 按钮时,都有可能从 TextField 中移除焦点,然后它就会起作用(但仍然只有在这个 TextField 上没有焦点的情况下)。那么问题是,每次我需要在其中写一些东西时,我都必须点击 TexField...