2015-05-13 2 views
0

Я создал таблицу в JavaFx. Я использовал отражение, чтобы заполнить таблицу цифрами от 1 до 100. Эта таблица содержит номер зоны и описание. Есть 100 зон. Я хочу, чтобы таблица была доступна для редактирования. Я использовал следующий код, чтобы сделать ячейки доступными для редактирования.Редактирование таблицы в JavaFx

zonesTable.setEditable(true); 
zone.setEditable(true); 
zone.setCellFactory(TextFieldTableCell.<Zones>forTableColumn()); 

description.setEditable(true); 
description.setCellFactory(TextFieldTableCell.<Zones>forTableColumn()); 

    zone.setCellValueFactory(new PropertyValueFactory<Zones, String>("rZoneNumber")); 
    description.setCellValueFactory(new PropertyValueFactory<Zones, String>("rDescription")); 

    for(int i = 0; i < 100; i++){ 
     data.add(new Zones(i + "", "")); 
    } 

    zonesTable.setItems(data); 

В настоящий момент этот код добавляет номера в столбец зоны и редактирует зону и описание столбца. Однако после ввода значения в столбец и нажатия следующей строки мои значения, которые я вводил в таблицу, исчезают. Понятия не имею почему. Что мне нужно сделать, чтобы мои типизированные значения оставались видимыми в таблице после того, как я выбрал другую строку, кроме той, которую я редактирую? Заранее спасибо!

+0

Пожалуйста, разместите свой класс модели «Зоны». –

+0

Это не свинг – user3224416

ответ

0

Однако после ввода значения в столбец и нажатия следующей строки мои значения, которые я вводил в таблицу, исчезают.

Это не работает, потому что в JavaFX существует серьезная, неловкая ошибка, которую Oracle отказывается исправлять.

Решение для вас - нажать клавишу ввода, прежде чем вы нажмете следующую строку. Но, конечно, вы не можете просить об этом от ваших пользователей.

Вы можете найти обходное решение here.

Если вы хотите переделать исправление и прокомментировать ошибку, here's the issue.

0

Недостаточно кода для определения того, как вы работаете со столом.

  1. Вы могли tableColumn.setOnEditCommit (новый CustomEventHandler)
  2. Вы могли tableColumn.setCellFactory (TextFieldTableCell.forTableColumn (новый StringConverter() {логика});

Тех, кто еще только совершающие изменения ячейка, когда нажата клавиша Enter, поэтому вам по-прежнему потребуется ваша собственная реализация, основанная на том, какое событие вы планируете совершить.