2017-07-27 74 views
0

獲得屬性我想從一個模型的屬性在我的TableCell的,所以根據該屬性可以讓本身在下面的例子中,我可以maipulate細胞:JavaFX的:從TableCell的

我有這樣一個模型:

public class Model { 

    private CustomProperty<Integer> appleCount; 
    private CustomProperty<Integer> peachCount; 

    public Model(Integer appleCount, Integer peachCount) { 
     this.appleCount = new CustomIntegerProperty(appleCount); 
     this.peachCount = new CustomIntegerProperty(peachCount); 
    } 

    public CustomProperty<Integer> appleCountProperty() { 
     return appleCount; 
    } 

    public CustomProperty<Integer> peachCountProperty() { 
     return peachCount; 
    } 
} 

這種模式只是一個惡搞我,和我有有兩個或兩個以上CustomProperty<Integer>

然後我有了這個Model或類似的CLA幾桌几模型ss作爲TableView的模型。我有一個自定義TableCell與覆蓋updateItem,那裏我想設置單元格的文本取決於CustomProperty具有例如initialValue,oldValue等的屬性。例如,如果initialValue爲0,然後將文本設置爲空而不是默認情況下有單元格。我有這方面的部分解決方案:創建一個interface HasCustomProperty那麼模型就要實現它,但後來有幾個問題:

  • 我需要添加兩個CustomProperties來或他們的接口
  • 我的列表需要以某種方式詢問單元格:你是appleCount?你是桃子細胞嗎?

可以肯定的是在一個小區只有一個屬性,蘋果或桃子,所以理論上我不應該關心的電池,如果我知道他們兩個都CustomIntegerProperties所以我知道他們有initialValueoldValue,所以我可以根據它設置單元格的文本。

我只能得到這個項目,這是一個Integer類型,所以我沒有它的屬性,或者有什麼辦法來獲得屬性本身?

溶劑可能是在每個列的cellFactory中覆蓋updateItem,並且在那裏我知道例如這是appleColumn,因此從appleCountProperty獲取信息等等,但是如果我有這些,會導致大量重複的代碼在5-6個地方完成。所以我認爲我做了一個自定義TableCell,然後在那裏管理文本,然後我爲每個列設置cellFactory()的單元格。

你有什麼想法我怎麼能做到這一點簡單沒有重複的代碼?

+0

我不太確定你問的問題....我提供了一個關於如何在更新項目中給單元格單元格提供查詢的整個對象的答案。如果這不是你正在尋找的,請讓我知道,我希望能指引你朝另一個方向發展。 –

回答

1

根據我們的討論 - 我認爲你面臨的問題是確定用戶集合0和IntegerProperty的初始化0之間的差異。

而不是使用IntegerProperty它使用int和不能爲空 - 你應該使用在模型如下:

private ObjectProperty<Integer> appleCountProperty = new SimpleObjectProperty<>(); 

然後在你的表,你只是給它綁定:

@FXML 
TableColumn<Model, Integer> appleCountColumn; 

//初始化

appleCountColumn.setCellValueFactory(data -> data.getValue().appleCountProperty()); 

這應該會給你你需要的東西。

+0

我知道這可以是一個解決方案,但問題是,如果我使用這種解決方案,我將有重複的代碼,因爲我有幾個模型類,是相似的,他們有一個'CustomProperty ',那麼我將不得不做這在很多地方。我想要一個自定義表格單元格,它可以在一個地方處理所有'CustomProperty '-s,然後爲每個列我可以簡單地調用'.setCellFactory(factory - > new CustomIntegerTableCell())' – Sunflame

+0

你只是想讓單元格保持空白當它是0?我不明白爲什麼你需要以這種方式查詢單元格 - 我需要以某種方式問單元格:你是appleCount嗎?或者你是桃子細胞嗎? –

+0

所以是的,我想要使用整數值,但是當我最初構建行時,我想要使用0-s來初始化清空。但後來,如果我將值設置爲0,則應該顯示0。 – Sunflame