如何在JavaFX 2上使用事件处理程序onEditCommit和onEditCancel?

0 listview javafx javafx-2 fxml

我正在尝试进行ListView 编辑,但是当我添加事件处理程序时onEditCommit,onEditCancel在代码中我无法更改文本ListView.在我的代码下面(执行但编辑不起作用):

public class ItensTipoStringController implements Initializable {
   @FXML
   private ListView lstItens;
   ArrayList<String> itens = new ArrayList<>();
   ObservableList itensObservaveis = FXCollections.observableArrayList(itens);

   @Override
   public void initialize(URL url, ResourceBundle rb) { 
      itens.add("Evandro");
      itens.add("Miguel");

      lstItens.setEditable(true);        
      lstItens.setCellFactory(TextFieldListCell.forListView());
      lstItens.getItems().addAll(itens);

      lstItens.setOnEditCommit(new EventHandler() {
        @Override
        public void handle(Event event) {
            System.out.println("onEditCommit");
        }
    });

    lstItens.setOnEditCancel(new EventHandler() {
        @Override
        public void handle(Event event) {
            System.out.println("onEditCancel");
        }
    });

    lstItens.setOnEditStart(new EventHandler() {
        @Override
        public void handle(Event event) {
            System.out.println("onEditStart");
        }
    });
   }    
Run Code Online (Sandbox Code Playgroud)

}

tar*_*lah 6

编辑不起作用

你的意思是列表项的值没有改变OnEditCommit

当然,你只是打印 System.out.println("onEditCommit");

您必须更新您的项目,将此行添加到handle方法正文.

lstItens.getItems().set(event.getIndex(), event.getNewValue());
Run Code Online (Sandbox Code Playgroud)

这个要点提供了一个完整的工作示例,您可以JavaFX ListView 在这里这里找到更多信息.