Итак, в моем коде есть таблица с несколькими редактируемыми столбцами.

Некоторые из них являются текстовыми, некоторые имеют раскрывающееся меню, а другие представляют собой поля выбора (true / false)

Вот как настраиваются столбцы:

usernameCol.setCellFactory(TextFieldTableCell.forTableColumn());
usernameCol.setCellValueFactory(new PropertyValueFactory<User,String>("username"));
permissionLevelCol.setCellFactory(ChoiceBoxTableCell.forTableColumn(/* this is a String[]*/usersManager.getPermissionNamesList()));
permissionLevelCol.setCellValueFactory(new PropertyValueFactory<User,String>("permissionLevel"));
giveRefundsCol.setCellFactory(CheckBoxTableCell.forTableColumn());
giveRefundsCol.setCellValueFactory(new PropertyValueFactory<PermissionLevel, CheckBoxTableCell>("giveRefunds"));

Это работает для TextFieldTableCell и ChoiceBoxTableCell, но я не знаю, что добавить для ChoiceBoxTableCell - ему нужен параметр в CheckBoxTableCell.forTableColumn()

Сообщение об ошибке:

Ошибка: (56, 56) java: не найден подходящий метод для forTableColumn (без аргументов) метод javafx.scene.control.cell.CheckBoxTableCell.forTableColumn (javafx.scene.control.TableColumn) неприменимо (невозможно определить переменную типа ( s) S (фактические и формальные списки аргументов различаются по длине)) метод javafx.scene.control.cell.CheckBoxTableCell.forTableColumn (javafx.util.Callback>) неприменим (не может вывести переменные типа S, T ( фактические и формальные списки аргументов различаются по длине)) метод javafx.scene.control.cell.CheckBoxTableCell.forTableColumn (javafx.util.Callback>, boolean) неприменимо (невозможно вывести переменные типа S, T (фактические и списки формальных аргументов различаются по длине)) метод javafx.scene.control.cell.CheckBoxTableCell.forTableColumn (javafx.util.Callback>, javafx.util.StringConverter) неприменим (невозможно вывести переменные типа S, T ( фактический и формальный списки аргументов отличаются l ength))

Ps: Строка 56 сообщения об ошибке - это строка giveRefundsCol.setCellFactory(CheckBoxTableCell.forTableColumn());

-5
wayne1512 19 Сен 2018 в 13:13

2 ответа

Лучший ответ

Кажется, вы просто передаете саму колонку.

giveRefundsCol.setCellFactory(CheckBoxTableCell.forTableColumn(giveRefundsCol));

Забавная история, что он не используется в исходном коде Oracle, вы можете просто передать null Он будет работать так же

public static <S> Callback<TableColumn<S,Boolean>, TableCell<S,Boolean>> forTableColumn(
        final TableColumn<S, Boolean> column) {
    return forTableColumn(null, null);
}
0
pdem 19 Сен 2018 в 11:19

Попробуйте это после ошибки отображения кода Line 56. 'giveRefundsCol.setSelected (истина)'

Он должен иметь возможность захватывать данные, сделанные для флажка, и устанавливать для него флажок.

0
taiwo sunday 19 Сен 2018 в 10:45