Почему ObservableList сохраняет только один элемент?

Я пытаюсь добавить "плееры" к ObservableList через текст TextField.

    @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(); каждый раз создает новый список. Удалите его и создайте список только один раз.

twain249 28.03.2018 22:47

Да, это то, что я думаю, но если я удалю его, выдает ошибку на консоли, я попытаюсь добавить его в другом месте

Gabriel Mc Gann 28.03.2018 22:57

не удалять lista_Jugadores = FXCollections.observableArrayList (); просто выполните инициализацию метода.

Menai Ala Eddine - Aladdin 29.03.2018 01:11

Что касается вашей проблемы: другие на высоте. Для получения дополнительной помощи прочтите stackoverflow.com/help/mcve и действуйте соответственно. Также обратите внимание: что бы вы ни делали, не используйте table.refresh ... никогда !! Если вы чувствуете, что вам это нужно, что-то не так с настройкой: правильно настроенная таблица обновит себя при setItems (или любой модификации списка данных)

kleopatra 29.03.2018 05:34
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
4
53
1

Ответы 1

lista_Jugadores = FXCollections.observableArrayList(); 

создает ObservableList каждый раз, когда ваша программа вызывает ingresar_tabla()

Так что просто переместите эту строку 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);        


 }  

у вас нет имеют для репликации всех ошибок вопроса;) Не обновляйте, не сбрасывайте valueFactory, не переустанавливайте элементы - все, что требуется, это добавить нового Player.

kleopatra 29.03.2018 05:38

Изначально он может удалить LisView, но я ответил, учитывая то, что он хочет.

Menai Ala Eddine - Aladdin 29.03.2018 11:24

лучше ... теперь удалите setItems, и все в порядке :)

kleopatra 29.03.2018 14:46

Другие вопросы по теме