如何使用事件处理程序onEditCommit和onEditCancel对JavaFX的2?(How

2019-09-01 12:16发布

我试图做一个ListView 编辑的 ,但是当我添加事件处理程序onEditCommitonEditCancel中的代码,我不能更改文本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");
        }
    });
   }    

}

Answer 1:

编辑不工作

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

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

你必须更新你的物品,这条线添加到您的handle方法体。

lstItens.getItems().set(event.getIndex(), event.getNewValue());

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



文章来源: How to use the event handler onEditCommit and onEditCancel on JavaFX 2?