【问题标题】:Why ObservableList saves only one element ?为什么 ObservableList 只保存一个元素?
【发布时间】:2018-09-07 16:34:59
【问题描述】:

我正在尝试通过 TextField 文本将“玩家”添加到 ObservableList

    @FXML   
 void ingresar_tabla(){
     String jugador = t_ingresarjudaror.getText();
     Jugador juga = new Jugador(jugador);
     lista_Jugadores = FXCollections.observableArrayList();
     lista_Jugadores.add(juga);
     juga.setNombre(jugador);
     colJugador.setCellValueFactory(new PropertyValueFactory<>("nombre"));
     t_tabla.setItems(lista_Jugadores);
     t_tabla.refresh();
     System.out.println(lista_Jugadores);        


 }  

我的问题是每次我在文本字段中输入新名称时,列表只保存最后一个值。

如何保存所有记录?

【问题讨论】:

  • 很确定这个lista_Jugadores = FXCollections.observableArrayList(); 每次都会创建一个新列表。删除它,只创建一次列表。
  • 是的,我是这么想的,但是如果我删除它,控制台会报错,我会尝试在别处添加它
  • 不要删除 lista_Jugadores = FXCollections.observableArrayList();只需对方法进行初始化即可。
  • 至于你的问题:其他人都在现场。如需进一步帮助,请阅读stackoverflow.com/help/mcve 并采取相应措施。另请注意:无论您做什么,都不要使用 table.refresh ...永远不会!如果您觉得需要它,则说明设置有问题:正确配置的表将在 setItems 上自我更新(或对数据列表的任何修改)

标签: java javafx


【解决方案1】:
lista_Jugadores = FXCollections.observableArrayList(); 

每次您的程序调用 ingresar_tabla() 时创建一个 ObservableList

所以只需移动这条线lista_Jugadores = FXCollections.observableArrayList();

你的方法是这样的:

 ObeservableList<Jugador> lista_Jugadores =   FXCollections.observableArrayList();
colJugador.setCellValueFactory(new PropertyValueFactory<>("nombre"));
   @FXML   
  void ingresar_tabla(){
     String jugador = t_ingresarjudaror.getText();
     Jugador juga = new Jugador(jugador);
     lista_Jugadores.add(juga);
     juga.setNombre(jugador);
     t_tabla.setItems(lista_Jugadores);
     System.out.println(lista_Jugadores);        


 }  

【讨论】:

  • 你没有 have 复制问题的所有错误;)不要刷新,不要重置 valueFactory,不要重新设置项目 - 所需要的只是添加新玩家。
  • 在最初,他可以删除 LisView,但我回答是考虑到他想要什么。
  • 更好...现在删除 setItems 一切都很好:)
猜你喜欢
  • 1970-01-01
  • 2018-07-12
  • 2022-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-07
  • 2014-11-28
  • 2017-10-09
相关资源
最近更新 更多