Float TableColumn [дубликат]

Другое событие NullPointerException возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.

String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals для гарантированного непустого объекта.

Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null.

Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.

String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

24
задан James_D 22 July 2014 в 15:46
поделиться

3 ответа

Одна странная часть API свойств заключается в том, что IntegerProperty реализует ObservableValue<Number>, а не ObservableValue<Integer>. Итак, несколько противоречиво, вам нужно

TableColumn<Person, Number> ageColumn = new TableColumn<Person, Number>("Age");

В стороне, и я не уверен, что это вызывает проблемы, но обычно использовать int вместо Integer для типа возврата для метода get и типа параметра для метода set в вашем классе модели. Они соответствуют типам для IntegerProperty.get() и IntegerProperty.set(...), поэтому он просто избегает некоторого неявного автоматического (un) бокса.

57
ответ дан James_D 20 August 2018 в 08:14
поделиться
  • 1
    Это отлично поработало. Спасибо за быстрый ответ и разъяснение. – Matt Perry 22 July 2014 в 16:11
  • 2
    Я сделал точно такой же пример, что и Мэтт, новый проект, чтобы понять это. Ну, теперь это работает. Спасибо, James_D – HoNgOuRu 7 September 2015 в 17:03

вы можете использовать метод .asObject, чтобы ваш код работал, вам не нужно менять параметр TableColumn Paramater на Number

ageColumn.setCellValueFactory(cellData -> cellData.getValue().ageProperty().asObject());

idk, который лучше кода, измените параметр на Number или использовать метод asObject

связанный Link

7
ответ дан icemelt 20 August 2018 в 08:14
поделиться
  • 1
    возможно, если вы вернете его как объект, он напечатает метод toString и примет значение в виде строки, я думаю, что это поведение по умолчанию – HoNgOuRu 7 September 2015 в 17:05

Для типа String:

firstNameColumn.setCellValueFactory(cellData -> cellData.getValue().firstNameProperty());

Если вы хотите использовать IntegerProperty или DoubleProperty, setCellValueFactory(...) должен иметь дополнительный asObject():

ageColumn.setCellValueFactory(cellData -> cellData.getValue().ageProperty().asObject());

Это необходимо из-за плохого дизайнерского решения JavaFX.

Источник и кредиты

0
ответ дан swapyonubuntu 20 August 2018 в 08:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: