如何在用户 'erases' 时删除一个 JavaFX ListView 项?

How to remove a JavaFX ListView item when the user 'erases' it?

我有一个带有 TextField 样式单元格的 ListView。 (它实际上是我自己的 ListCell,我偷猎并修改它以实现每次击键验证。)

有时,用户不会点击附近的 'delete' 按钮,而是

  1. 开始编辑单元格
  2. 擦除里面的所有文字
  3. 提交编辑。

他做这一切都是为了试图删除该项目。如果可能的话,我想支持这个用例,但我不知道从哪里开始。建议?

你可以做到

list.setOnEditCommit( new EventHandler<ListView.EditEvent<String>>()
{
    @Override
    public void handle( ListView.EditEvent<String> event )
    {
        String val = event.getNewValue();
        if ( val == null || val.trim().isEmpty() )
        {
            System.out.println( "removed = " + event.getSource().getItems().remove( event.getIndex() ) );
        }
    }
} );