Как заполнить JavaFX TableView данными с помощью записи Java с данными из базы данныхJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как заполнить JavaFX TableView данными с помощью записи Java с данными из базы данных

Сообщение Anonymous »


Короткий вопрос. Как лучше всего заполнить представление таблицы Java FX данными из базы данных с помощью записи? (а не типичный класс объектов с геттерами и сеттерами)

Полный вопрос: У меня есть файл InventoryRecord.java, который я недавно создал, чтобы заменить традиционный объект под названием «Инвентаризация», который я использовал для заполнения табличного представления:

import java.util.List; публичная запись InventoryRecord( Строка сделать , Струнная модель , Строка официальнаямодель , Строка УПК , Категория List , Тип строки , Описание строки ,Продавец струн , Двойная стоимость , Двойная цена ) {} Я хотел бы использовать эту запись в качестве основы для заполнения моего TableView с использованием данных из базы данных (в данном случае это Neo4j, но это не важно)

До того, как у меня появилась эта запись InventoryRecord, я использовал типичный класс Inventory, который выглядел так (я, конечно, сократил его, чтобы вопрос был читабельным, предположим, что для каждого свойства Inventory есть геттеры/сеттеры.)< /п> публичный класс Inventory { частная строка make; частная строковая модель; частная строка официальнаямодель; частная категория List; частный строковый тип; описание частной строки; частный поставщик строк; частная двойная стоимость; частная двойная цена; частная строка UPC; //Метод фактического создания экземпляра объекта инвентаризации, использует методы установки для выполнения проверок для каждого поля public Inventory (производитель строки, модель строки, официальная модель строки, upc строки, категория списка , тип строки, описание строки, поставщик строки, двойная стоимость, двойная цена) { this.setMake(сделать); this.setModel(модель); this.setOfficialModel(официальнаямодель); this.setUpc(UPC); this.setCategory(категория); this.setType(тип); this.setDescription(описание); this.setVendor(поставщик); this.setCost(стоимость); this.setPrice(цена); } И вот как я заполнил таблицу результатами запроса

while (result.hasNext()) { //result.next() служит нашим итератором, который увеличивает нас по записям и через цикл while. Запись запись = result.next(); Строка make = Record.get("make").asString(); Строковая модель = Record.get("модель").asString(); StringofficialModel = Record.get("officialModel").asString(); String upc = Record.get("upc").asString(); Список категория = Record.get("категории").asList(Value::asString); Тип строки = Record.get("тип").asString(); String desc = Record.get("описание").asString(); Строка поставщика = Record.get("вендор").asString(); Двойная стоимость = Record.get("стоимость").isNull() ? null: Record.get("стоимость").asDouble(); Двойная цена = Record.get("цена").isNull() ? null: Record.get("цена").asDouble(); //при создании анонимных предметов Инвентаря вы можете отправить их в конструктор с любым именем InventoryTable.getItems().add(new Inventory(марка, модель, официальнаямодель,UPC, категория, тип, описание,поставщик, стоимость, цена)); } //Фабрика значений свойств должна использовать имена свойств в качестве строковых аргументов в конструкторе makeColumn.setCellValueFactory(new PropertyValueFactory("make")); modelColumn.setCellValueFactory(new PropertyValueFactory("модель")); OfficialModelColumn.setCellValueFactory(new PropertyValueFactory("officialModel")); CategoryColumn.setCellValueFactory(new PropertyValueFactory("категория")); upcColumn.setCellValueFactory(new PropertyValueFactory("upc")); typeColumn.setCellValueFactory(new PropertyValueFactory("тип")); descriptionColumn.setCellValueFactory(new PropertyValueFactory("описание")); vendorColumn.setCellValueFactory(new PropertyValueFactory("vendor")); CostColumn.setCellValueFactory(new PropertyValueFactory("стоимость")); PriceColumn.setCellValueFactory(new PropertyValueFactory("цена")); InventoryTable.setItems(inventoryTable.getItems()); Но как мне переключить все на InventoryRecord, а не только на объект Inventory, .setCellValueFactory и PropertyValueFactory не нравится то, что они видят. Я попробовал это (с некоторой помощью Google Bard), и, похоже, для строк не выдается никаких ошибок: makeColumn.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().make())); Но для свойств/столбцов List и Double я попробовал это:

categoryColumn.setCellValueFactory(cellData -> new SimpleListProperty(cellData.getValue().category())); CostColumn.setCellValueFactory(cellData -> new SimpleDoubleProperty(cellData.getValue().cost())); и я получаю следующие ошибки: Несоответствие типов: невозможно преобразовать SimpleListProperty в ObservableValue Несоответствие типов: невозможно преобразовать SimpleDoubleProperty в ObservableValue

Любая помощь очень ценна!

Я попробовал это:

while (result.hasNext()) { //result.next() служит нашим итератором, который увеличивает нас по записям и через цикл while. Запись запись = result.next(); Строка make = Record.get("make").asString(); Строковая модель = Record.get("модель").asString(); StringofficialModel = Record.get("officialModel").asString(); String upc = Record.get("upc").asString(); Категория List = Record.get("categories").asList(Value::asString); Тип строки = Record.get("тип").asString(); String desc = Record.get("описание").asString(); Строка поставщика = Record.get("вендор").asString(); Двойная стоимость = Record.get("стоимость").isNull() ? null: Record.get("стоимость").asDouble(); Двойная цена = Record.get("цена").isNull() ? null: Record.get("цена").asDouble(); // Создаем InventoryRecord непосредственно из записи InventoryRecord InventoryRecord = new InventoryRecord(марка,модель,официальнаямодель,UPC,категория,тип,дескриптор,поставщик,стоимость,цена); // Добавляем InventoryRecord к элементам таблицы InventoryTable.getItems().add(inventoryRecord); } //Фабрика значений свойств должна использовать имена свойств в качестве строковых аргументов в конструкторе makeColumn.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().make())); modelColumn.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().model())); OfficialModelColumn.setCellValueFactory(cellData -> новый SimpleStringProperty(cellData.getValue().officialModel())); CategoryColumn.setCellValueFactory(cellData -> new SimpleListProperty(cellData.getValue().category())); upcColumn.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().upc())); typeColumn.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().type())); descriptionColumn.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().description())); vendorColumn.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().vendor())); CostColumn.setCellValueFactory(cellData -> new SimpleDoubleProperty(cellData.getValue().cost())); PriceColumn.setCellValueFactory(cellData -> new SimpleDoubleProperty(cellData.getValue().price())); InventoryTable.setItems(inventoryTable.getItems()); но получил следующие ошибки: Несоответствие типов: невозможно преобразовать SimpleListProperty в ObservableValue Несоответствие типов: невозможно преобразовать SimpleDoubleProperty в ObservableValue

Я ожидаю чего-то вроде этого (вот как это работает с моим классом Inventory, который я пытаюсь заменить на InventoryRecord): TableView с использованием класса инвентаря
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как заполнить JavaFX TableView данными с помощью записи Java с данными из базы данных
    Anonymous » » в форуме JAVA
    0 Ответы
    34 Просмотры
    Последнее сообщение Anonymous
  • TableView не обновляется после добавления или обновления записи в JavaFX
    Anonymous » » в форуме JAVA
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • TableView не обновляется после добавления или обновления записи в JavaFX
    Anonymous » » в форуме JAVA
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Как писать в определенном месте в TableView с помощью JavaFX
    Anonymous » » в форуме JAVA
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Предварительный загрузчик JavaFX: ожидаемый статический метод javafx.graphics/com.sun.javafx.iio.ImageStorage.addImageLo
    Anonymous » » в форуме JAVA
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»