Java ReactFX-如何为CTRL-C组合键事件创建流?

Java ReactFX-如何为CTRL-C组合键事件创建流?,java,javafx,javafx-8,reactfx,Java,Javafx,Javafx 8,Reactfx,我是ReactFX的新手,我正在尝试捕捉典型复制操作中按下的CTRL和C键 如何有效地将其捕获到流中?到目前为止,这是我能得到的全部,但它甚至没有编译 final EventStream<KeyEvent> keysTyped = EventStreams.eventsOf(myTbl, KeyEvent.KEY_TYPED) .reduceSuccessions((a,b) -> new KeyCodeCombination(a.getCode(),b.get

我是ReactFX的新手,我正在尝试捕捉典型复制操作中按下的CTRL和C键

如何有效地将其捕获到流中?到目前为止,这是我能得到的全部,但它甚至没有编译

final EventStream<KeyEvent> keysTyped = EventStreams.eventsOf(myTbl, KeyEvent.KEY_TYPED)
        .reduceSuccessions((a,b) -> new KeyCodeCombination(a.getCode(),b.getCode()), 500);
final EventStream keysTyped=EventStreams.eventsOf(myTbl,KeyEvent.KEY\u TYPED)
.reduceSuccessions((a,b)->新的KeyCodeCombination(a.getCode(),b.getCode()),500);
这对我很有用:

    KeyCombination ctrlC = new KeyCodeCombination(KeyCode.C, KeyCombination.SHORTCUT_DOWN);
    final EventStream<KeyEvent> keysTyped = EventStreams.eventsOf(text, KeyEvent.KEY_PRESSED)
            // the following line, if uncommented, will limit the frequency
            // of processing ctrl-C to not more than once every 0.5 seconds
            // As a side-effect, processing will be delayed by the same amount
            // .reduceSuccessions((a, b) -> b, Duration.ofMillis(500))
            .filter(ctrlC::match);
    keysTyped.subscribe(event -> System.out.println("Ctrl-C pressed!"));
KeyCombination ctrlC=新的keycodecompbination(KeyCode.C,KeyCombination.SHORTCUT\u DOWN);
最终事件流keysTyped=EventStreams.eventsOf(文本,KeyEvent.KEY_按下)
//下一行如果未注释,将限制频率
//将ctrl-C处理为每0.5秒不超过一次
//作为副作用,处理将延迟相同的时间
//.减少成功率((a,b)->b,持续时间.百万(500))
.filter(ctrlC::match);
keysTyped.subscribe(事件->系统.out.println(“按下Ctrl-C!”);

您甚至不需要
减少成功次数
reduceSuccessions
的作用是,如果两个
Ctrl+C
在500ms内出现,它将忽略第一个
Ctrl+C
。实际上,这意味着您将
Ctrl+C
处理延迟500毫秒,因为
reduceSuccessions
将不得不等待500毫秒,以查看是否有另一个
Ctrl+C
在该间隔内到达。我假设OP想要限制操作的频率(例如,在将
表格视图
放入剪贴板之前,可能会转换其中的大量数据)但是,是的,我同意很难在这里看到一个真实的用例。很高兴在这里看到ReactFX作者。是的,很抱歉误导了James。我不想限制频率,而是认识到
CTRL
C
键同时连续按下。所以我猜我只需要删除
reduceSuccessions()
如果这对我来说不是必需的话。@ThomasN.JavaFX中的
KeyEvent
已经包含了是否按下了
Ctrl
的信息,所以你不需要使用ReactFX重新创建这个逻辑。另请参阅我对James答案的评论。