使用删除键删除JavaFX表行

时间:2014-12-05 11:06:50

标签: javafx javafx-2 javafx-8

有没有办法使用键盘删除键删除选定的表格行?

这个实现有没有例子?

2 个答案:

答案 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 键(DeleteDel,您更喜欢称呼它)。
由于进行了一些调试,我知道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和意大利语键盘布局。如果相关的话。