有没有办法使用键盘删除键删除选定的表格行?
这个实现有没有例子?
答案 0 :(得分:7)
当然可以。您只需注册一个EventHandler并收听特定的KeyCode。以下示例适用于TreeTableView,但应适用于所有TableView。
treeTableView.setOnKeyPressed( new EventHandler<KeyEvent>()
{
@Override
public void handle( final KeyEvent keyEvent )
{
final TreeItem<YourObject> selectedItem = treeTableView.getSelectionModel().getSelectedItem();
if ( selectedItem != null )
{
if ( keyEvent.getCode().equals( KeyCode.DELETE ) )
{
//Delete or whatever you like:
presenter.onEntityDeleteAction( selectedItem );
}
//... other keyevents
}
}
} );
答案 1 :(得分:0)
在尝试了很多之后,我设法(使用我的应用程序逻辑)拦截并处理了from threading.pool import Pool
键(Delete
或Del
,您更喜欢称呼它)。
由于进行了一些调试,我知道Canc
键是用Unicode代码Delete
标识的。
因此,在我键入键的那一刻,我读取了字符并将其与此代码进行比较。
这是我的代码的一部分,与表视图没有任何关联,但我将其用于TextField。 重要的是推理。
\u007F
输出:
@FXML
public void myKeyListener(KeyEvent keyEvent) {
//Matches and manage TAB, Enter and Delete buttons
if ((keyEvent.getCharacter().equals("\t") ||
keyEvent.getCharacter().equals("\r") ||
keyEvent.getCharacter().equals("\u007F") //<-- **THIS** is the important one! *****
)) {
//My / your application logic
keyEvent.consume(); //The documentation says: "Marks this Event as consumed. This stops its further propagation."
return;
}
//Other logic...
//Entered only to have test outputs
System.out.println("getCode: " + keyEvent.getCode());
System.out.println("getCharacter: " + keyEvent.getCharacter());
System.out.println("getText: " + keyEvent.getText());
System.out.println("isMetaDown: " + keyEvent.isMetaDown());
}
我希望它对其他人有用。 ?
P.S。我正在使用Windows 10和意大利语键盘布局。如果相关的话。