JFX为所有空间提供了默认的鼠标键盘监听,以符合一般使用习惯. 比如表格/列表/树等控件中可以使用方向键选择表单元,空格/回车/F2开始编辑. 但有时候我们需要自定义的键盘监听来适合自己的需要, 比如在表中按下回车将自动提交编辑并移到右边单元.
屏蔽控件的默认鼠标键盘监听, 可以通过添加一个事件过滤器(EventFilter)来实现.下面的例子实现了屏蔽TableView的Enter键默认监听, 并在Enter键按下时选择表格的右边单元.
table.addEventFilter(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent e) {
// e.consume(); //blocks all key bingdings
table.requestFocus();
KeyCode code =e.getCode();
if(code == KeyCode.ENTER){
try {
// your code here
new Robot().keyPress(java.awt.event.KeyEvent.VK_RIGHT);//XXX javafx has no robot for key type...
} catch (Exception e1) {
}
e.consume();
}
}
});
事件过虑参考阅读:
http://docs.oracle.com/javafx/2.0/events/jfxpub-events.htm