亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在JavaFX中顯示表信息?

如何在JavaFX中顯示表信息?

慕森王 2023-11-10 17:13:04
以下代碼應該顯示庫存所有零件可觀察列表中的零件。我不確定這是否是庫存類未返回正確的對象,或者是否發生了其他情況,或者我在表的初始化中是否遺漏了某些內容。編輯:我期望通過MainViewController initializer.class 加載PartId、PartName、PartStock、 和通過類。InHouse 類擴展了 Part 類PartPriceInventoryobservableList allParts主視圖控制器package ViewController;import Model.InHouse;import Model.Inventory;import Model.Part;import Model.Product;import java.io.IOException;import java.net.URL;import java.util.HashSet;import java.util.ResourceBundle;import javafx.collections.ObservableList;import javafx.event.ActionEvent;import javafx.fxml.FXML;import javafx.fxml.FXMLLoader;import javafx.fxml.Initializable;import javafx.scene.Node;import javafx.scene.Parent;import javafx.scene.Scene;import javafx.scene.control.TableColumn;import javafx.scene.control.TableView;import javafx.scene.control.TextField;import javafx.scene.control.cell.PropertyValueFactory;import javafx.stage.Stage;public class MainViewController implements Initializable {    private static Inventory inventory;    //Part FXIDs    @FXML private TableView<Part> PartsTable;    @FXML private TableColumn<Part, Integer> PartId;    @FXML private TableColumn<Part, String> PartName;    @FXML private TableColumn<Part, Integer> PartStock;    @FXML private TableColumn<Part, Double> PartPrice;    //sets up the table view and loads the parts from the inventory list    public void initialize(URL url, ResourceBundle rb) {        PartId.setCellValueFactory(new PropertyValueFactory<>("PartId"));        PartName.setCellValueFactory(new PropertyValueFactory<>("PartName"));        PartStock.setCellValueFactory(new PropertyValueFactory<>("PartStock"));        PartPrice.setCellValueFactory(new PropertyValueFactory<>("PartPrice"));        inventory.addPart(new InHouse(0, "name", 5.00, 1, 1, 5, 0));        PartsTable.setItems(inventory.getAllParts());    }}
查看完整描述

1 回答

?
偶然的你

TA貢獻1841條經驗 獲得超3個贊

請閱讀PropertyValueFactory類的javadoc。?這行代碼(來自類)...
MainViewController

PartId.setCellValueFactory(new?PropertyValueFactory<>("PartId"));

意味著您的類Part具有以下聲明的方法...

public?ObservableValue<Integer>?PartIdProperty()

請注意,名稱區分大小寫。換句話說,partIdProperty正確的。這同樣適用于彼此TableColumn。從您發布的代碼來看,您的類中似乎缺少這些方法Part。

或者,您可以編寫自己的Callback接口實現。該接口中方法的聲明可能看起來很嚇人,但實現起來實際上并不困難。請記住,接口方法是由JavaFX基礎結構調用的。使用作為類實例的參數調用您的方法Part,并且您的方法需要返回從方法參數中提取的適當的ObservableValue 。

Part這是一個使用您的類顯示零件表的小示例程序。請注意,它使用Java 1.8 中添加的方法引用。另請注意,在下面的代碼中,getValue()類中的該方法CellDataFeatures返回一個Part對象。

import javafx.application.Application;

import javafx.beans.property.SimpleDoubleProperty;

import javafx.beans.property.SimpleIntegerProperty;

import javafx.beans.property.SimpleStringProperty;

import javafx.beans.value.ObservableValue;

import javafx.collections.FXCollections;

import javafx.collections.ObservableList;

import javafx.scene.Scene;

import javafx.scene.control.TableColumn;

import javafx.scene.control.TableView;

import javafx.scene.control.TableColumn.CellDataFeatures;

import javafx.scene.layout.BorderPane;

import javafx.stage.Stage;


public class CellValueFactoryExample extends Application {

? ? private ObservableList<Part> items;


? ? @Override

? ? public void init() {

? ? ? ? items = FXCollections.observableArrayList();

? ? ? ? for (int i = 0; i < 10; i++) {

? ? ? ? ? ? Part part = new Part(i, String.valueOf(i), (double) i, i, i, i);

? ? ? ? ? ? items.add(part);

? ? ? ? }

? ? }


? ? @Override

? ? public void start(Stage primaryStage) throws Exception {

? ? ? ? primaryStage.setTitle("Inventory");

? ? ? ? TableView<Part> table = createTable();

? ? ? ? BorderPane root = new BorderPane();

? ? ? ? root.setCenter(table);

? ? ? ? Scene scene = new Scene(root);

? ? ? ? primaryStage.setScene(scene);

? ? ? ? primaryStage.show();

? ? }


? ? private TableView<Part> createTable() {

? ? ? ? TableView<Part> table = new TableView<Part>(items);


? ? ? ? TableColumn<Part, Number> idCol = new TableColumn<>("ID");

? ? ? ? idCol.setCellValueFactory(this::getIdColumnValue);


? ? ? ? TableColumn<Part, String> nameCol = new TableColumn<>("Name");

? ? ? ? nameCol.setCellValueFactory(this::getNameColumnValue);


? ? ? ? TableColumn<Part, Number> priceCol = new TableColumn<>("Price");

? ? ? ? priceCol.setCellValueFactory(this::getPriceColumnValue);


? ? ? ? TableColumn<Part, Number> stockCol = new TableColumn<>("Stock");

? ? ? ? stockCol.setCellValueFactory(this::getStockColumnValue);


? ? ? ? TableColumn<Part, Number> minCol = new TableColumn<>("Min");

? ? ? ? minCol.setCellValueFactory(this::getMinColumnValue);


? ? ? ? TableColumn<Part, Number> maxCol = new TableColumn<>("Max");

? ? ? ? maxCol.setCellValueFactory(this::getMaxColumnValue);


? ? ? ? table.getColumns().addAll(idCol, nameCol, priceCol, stockCol, minCol, maxCol);

? ? ? ? return table;

? ? }


? ? private ObservableValue<Number> getIdColumnValue(CellDataFeatures<Part, Number> param) {

? ? ? ? return new SimpleIntegerProperty(param.getValue().getId());

? ? }


? ? private ObservableValue<String> getNameColumnValue(CellDataFeatures<Part, String> param) {

? ? ? ? return new SimpleStringProperty(param.getValue().getName());

? ? }


? ? private ObservableValue<Number> getPriceColumnValue(CellDataFeatures<Part, Number> param) {

? ? ? ? return new SimpleDoubleProperty(param.getValue().getPrice());

? ? }


? ? private ObservableValue<Number> getStockColumnValue(CellDataFeatures<Part, Number> param) {

? ? ? ? return new SimpleIntegerProperty(param.getValue().getStock());

? ? }


? ? private ObservableValue<Number> getMinColumnValue(CellDataFeatures<Part, Number> param) {

? ? ? ? return new SimpleIntegerProperty(param.getValue().getMin());

? ? }


? ? private ObservableValue<Number> getMaxColumnValue(CellDataFeatures<Part, Number> param) {

? ? ? ? return new SimpleIntegerProperty(param.getValue().getMax());

? ? }


? ? public static void main(String[] args) {

? ? ? ? launch(args);

? ? }

}

這是正在運行的應用程序的屏幕截圖。

https://img1.sycdn.imooc.com/654df4470001cce102690299.jpg

查看完整回答
反對 回復 2023-11-10
  • 1 回答
  • 0 關注
  • 184 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號