如何使用事件处理程序onEditCommit和onEditCancel对JavaFX的2? [英] How to use the event handler onEditCommit and onEditCancel on JavaFX 2?

查看:1956
本文介绍了如何使用事件处理程序onEditCommit和onEditCancel对JavaFX的2?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图做一个的ListView 编辑,但,当我添加事件处理程序 onEditCommit onEditCancel 在code,我不能更改的ListView文本。下面我code(执行,但在修改不工作):

 公共类ItensTipoStringController实现Initializable {
   @FXML
   私人的ListView lstItens;
   ArrayList的<串GT; itens =新的ArrayList<>();
   ObservableList itensObservaveis = FXCollections.observableArrayList(itens);   @覆盖
   公共无效初始化(URL网址,资源包RB){
      itens.add(伊万德罗);
      itens.add(米格尔);      lstItens.setEditable(真);
      lstItens.setCellFactory(TextFieldListCell.forListView());
      。lstItens.getItems()的addAll(itens);      lstItens.setOnEditCommit(新的EventHandler(){
        @覆盖
        公共无效手柄(事件的事件){
            的System.out.println(onEditCommit);
        }
    });    lstItens.setOnEditCancel(新的EventHandler(){
        @覆盖
        公共无效手柄(事件的事件){
            的System.out.println(onEditCancel);
        }
    });    lstItens.setOnEditStart(新的EventHandler(){
        @覆盖
        公共无效手柄(事件的事件){
            的System.out.println(onEditStart);
        }
    });
   }

}


解决方案

  

编辑不起作用。


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

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

您需要更新您的项目,该行添加到您的处理方法体。

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

要点提供了一个完整的工作的例子,你可以找到关于<$ C $更多的信息C>的JavaFX的ListView 这里这里

I'm trying to make a ListView editable, but when I add the event handlers onEditCommit and onEditCancel in the code I can't change the text in the ListView. Below my code (executed but the edit doesn’t work):

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");
        }
    });
   }    

}

解决方案

the edit doesn’t work

You mean that the value of list item didn’t change on the OnEditCommit ?

Of course, you are just printing System.out.println("onEditCommit");

You have to update your item, add this line to your handle method body.

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

This gist provides a complete working example, you can find more informations about JavaFX ListView here and here.

这篇关于如何使用事件处理程序onEditCommit和onEditCancel对JavaFX的2?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆