如何使用事件处理程序onEditCommit和onEditCancel对JavaFX的2? [英] How to use the event handler onEditCommit and onEditCancel on 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 handlersonEditCommit
andonEditCancel
in the code I can't change the text in theListView
. 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屋!