第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

使用泛型類型構(gòu)造 ObservableList

使用泛型類型構(gòu)造 ObservableList

拉風(fēng)的咖菲貓 2021-08-25 17:38:30
我正在嘗試擴(kuò)展 JavaFX TableView 類,以便我可以將實(shí)體類傳遞給它,它會(huì)顯示該類的所有已保存對象。我可以讓它像這樣工作,但我希望我的自定義類足夠通用,只接受一個(gè) Class 變量并處理其余的:private void showSuppliers(){    tabPane.getTabs().stream().filter((tab) -> (tab.getText().compareTo("Fournisseurs") == 0)).map((tab) -> (VBox)tab.getContent()).forEachOrdered((vBox) ->     {        TableView<Supplier> table = new TableView<>();        TableColumn nameColumn = new TableColumn("Nom");        nameColumn.setCellValueFactory(new PropertyValueFactory<>("name"));        TableColumn addressColumn = new TableColumn("Addresse");        addressColumn.setCellValueFactory(new PropertyValueFactory<>("address"));        TableColumn contactColumn = new TableColumn("Contact");        contactColumn.setCellValueFactory(new PropertyValueFactory<>("contactPerson"));        TableColumn phoneNumberColumn = new TableColumn("Téléphone");        phoneNumberColumn.setCellValueFactory(new PropertyValueFactory<>("phoneNumber"));        TableColumn emailColumn = new TableColumn("Courriel");        emailColumn.setCellValueFactory(new PropertyValueFactory<>("emailAddress"));        TableColumn creationDateColumn = new TableColumn("Date de création");        creationDateColumn.setCellValueFactory(new PropertyValueFactory<>("enteredDate"));        table.getColumns().addAll(nameColumn, addressColumn, contactColumn, phoneNumberColumn, emailColumn, creationDateColumn);        ObservableList<Supplier> suppliers = FXCollections.observableArrayList(supplierService.findAll());        table.setItems(suppliers);        vBox.getChildren().add(table);    });}同樣,上述方法效果很好,但我必須為每個(gè)列出我想要避免的不同數(shù)據(jù)的表重復(fù)它。如您所見,添加列不是問題。我不明白的是如何使用我的 T 來制作這樣的 ObservableList :ObservableList<Supplier> suppliers = FXCollections.observableArrayList(supplierService.findAll());我嘗試了更換<Supplier>的<T>或<Class<T>>和似乎并不有效。當(dāng)這些東西幾乎不存在時(shí),我就學(xué)會(huì)了 Java,而且我在網(wǎng)上找到的關(guān)于它的信息說實(shí)話有點(diǎn)令人困惑。如何使用我的 T 變量作為類型構(gòu)建我的列表?
查看完整描述

1 回答

?
白板的微信

TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個(gè)贊

嗯,這很簡單,我只是完全刪除了它!這是最終結(jié)果,只需傳遞一個(gè)實(shí)體類和一個(gè)列表,其余的由表來處理!


public class EntityTable<T> extends TableView<T>

{

    private final Class<T> entityClass;


    private final List<T> entityList;


    public EntityTable(Class<T> entityClass, List<T> entityList) 

    {

        this.entityClass = entityClass;

        this.entityList = entityList;


        init();

    }


    private void init()

    {

        for (Field field : entityClass.getDeclaredFields())

        {

            if ((field.getType() != Set.class) && (field.getName().compareTo("id") != 0))

            {

                TableColumn column = new TableColumn(field.getName());

                column.setCellValueFactory(new PropertyValueFactory<>(field.getName()));


                getColumns().add(column);

            }

        }


        ObservableList list = FXCollections.observableArrayList(entityList);

        setItems(list);

    }

}

缺點(diǎn)是這將在類中顯示帶有實(shí)際屬性名稱的列標(biāo)題(并不總是非常用戶友好)。歡迎任何自動(dòng)在列標(biāo)題中放置更好的東西的建議!


編輯


對于我的列名,我最終創(chuàng)建了一個(gè)名為 FriendlyName 的自定義注釋,只有一個(gè)值參數(shù)。我現(xiàn)在像這樣填充列標(biāo)題:


FriendlyName friendlyName = field.getAnnotation(FriendlyName.class);


TableColumn column = new TableColumn(friendlyName.value());


查看完整回答
反對 回復(fù) 2021-08-25
  • 1 回答
  • 0 關(guān)注
  • 182 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號