2014-10-07 45 views
1

我有以下問題:我嘗試在JavaFX8中使用數組填充tableview。所以,我嘗試將該數組作爲一行添加到tableview中。當我按下Enter時,我在FXML文件的控制器中運行此代碼。這是代碼:JavaFX8:字符串不會顯示在TableView中

String[] words = {"ace", "boom", "crew", "dog", "eon"}; 
List<String> tableViewRow = Arrays.asList(words); 
ObservableList<String> row = FXCollections.observableList(tableViewRow); //observableArrayList also doesn't work 
transactionOverview.getItems().add(row); 

transactionOverview是我的tableview,字符串[]僅僅是我的實際的String []的佔位符。我試圖用多種方式創建我的桌面視圖:

public TableView<ObservableList<String>> transactionOverview; 
public TableView<ObservableList> transactionOverview; 
public TableView transactionOverview; 

沒有一個可行。 問題是tableview得到一個額外的行,我可以選擇,但現在有字符串值在tableview中可見。我不知道他們是否被添加。

我的代碼基於Javafx 2.2 - Dynamic table view - table data(來自Jitendra Pareek的答案),並且我選擇了此解決方案,因爲我不想使用額外的類來填充我的tableview。

任何幫助表示讚賞!

+0

是否總是有額外的行?我的意思是當「單詞」只有一個,兩個或沒有項目時會發生什麼。 – 2014-10-07 10:26:27

+0

TableView總是有5列(固定在FXML中),並且需要逐個添加額外的行。每筆交易的行數都需要不同。這是否回答你的問題,因爲我不確定你需要知道嗎? – bashoogzaad 2014-10-07 10:29:14

+0

您使用的是自定義單元工廠嗎? – 2014-10-07 12:22:38

回答

1

由於(根據您的意見),你必須列固定數量的,我會強烈建議創建一個模型類來保存表的每一行中的項目。然後你可以遵循標準模式,它應該很容易工作。

但是你管理一個TableView,你必須爲每個列單元格值工廠。這本質上是一個函數,它指定如何從行中的項目獲取單元格的值。如果你使用一個使用JavaFX屬性的模型類,那麼你可以使用PropertyValueFactory(儘管Java 8 lambda表達式使得它非常冗餘)。否則,你需要實現一個回調。

如果你真的想用一個表結構來保存每行的數據,並假設您的表和表列在FXML文件中的所有定義,你會做這樣的事情在你的控制器類:

​​
+0

非常感謝您的幫助@James_D,我現在正在使用額外的課程,但我將來肯定需要這個課程! – bashoogzaad 2014-10-08 08:37:16