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

时间:2013-04-30 12:36:54

标签: listview javafx-2 javafx fxml

我正在尝试制作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");
        }
    });
   }    

}

1 个答案:

答案 0 :(得分:5)

  

编辑不起作用

您的意思是OnEditCommit上的列表项的值没有变化?

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

您必须更新商品,将此行添加到handle方法正文中。

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

gist提供了一个完整的工作示例,您可以找到有关JavaFX ListView herehere的更多信息。