2015-07-01 4 views
0

В настоящее время я пытаюсь разрешить TableView быть источником входных данных пользователя, и, пытаясь прочитать учебники и т. П., Мне трудно понять, что необходимо сделать просто, чтобы пользователь мог поселить таблицу.JavaFX TableView: понимание структуры, позволяющей редактировать TableCell

Почти каждый пример, который я вижу, переопределяет все, где у самих TableCell есть метод setEdit(), о котором я не могу узнать, как ссылаться на сам TableCell, чтобы вызвать метод.

Однако мне трудно работать в обратном направлении, и я не нахожу учебники очень информативными о том, что происходит, только код огромных сумм, чтобы сделать что-то, что кажется принципиально простым для работы.

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

Кроме того, я делаю это с помощью FXML, если это имеет значение.

+1

ли [ 'TextFieldTableCell'] (http://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/ cell/TextFieldTableCell.html) не соответствует вашим потребностям? –

+0

Теоретически можно было бы купить, как заставить таблицу строить из них, а не над метками? –

+1

В Java, 'myTableColumn.setCellFactory (TextFieldTableCell.forTableColumn());'. В FXML (я никогда не пробовал этот подход) '' –

ответ

0

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

Java

myTableColumn.setCellFactory(TextFieldTableCell.forTableColumn()); 

FXML

<TableColumn> 
    <cellFactory> 
     <TextFieldTableCell fx:factory="forTableColumn"/> 
    </cellFactory> 
</TableColumn> 
+0

Вы объясните здесь не действительно имеет смысл. 'TableColumn' редактируются по умолчанию, и вы не показываете никакого кода, который в любом случае изменяет свойство editable. Вам нужно использовать 'TableCell' в этой колонке, которая поддерживает редактирование, что и делает ваш код. –

+0

Они не редактировались по умолчанию в моем коде, они были явно ложными в FXML. –

+1

Итак, вы должны сказать, что SceneBuilder явно устанавливал редактирование столбца таблицы на false (что странно, честно, но тогда инструменты для создания графического интерфейса обычно делают странные вещи в большинстве случаев). –

Смежные вопросы