我有兩個列表視圖,我在使用JavaFX項目中表示項目類別。第一個在初始化過程中設置了一個單獨的可觀察列表,並且不會更改。但是,第二個ListView會根據從第一個ListView中選擇哪個項目進行更改。除了一堆其他項目外,所選項目還保存到一個對象以供以後編輯。ListView以編程方式未顯示選定項目
當用戶想要編輯其中一個保存的對象時,我重用了這個相同的fxml文件和控制器。我遇到的問題是,雖然我可以以編程方式顯示第一個列表視圖,其可觀察列表和所選項目,並且還根據保存的項目的catagory1數據字段顯示第二個列表視圖和適當的可觀察列表,但我可以似乎沒有讓它顯示該項目被選中,我也不能在它應該的時候滾動第二個ListView。任何幫助將非常感激!
這裏是我的代碼,這些行動涉及的部分...
首先,這部分是在initialize()部分:
category1ListView.getSelectionModel().select(inventoryItem.getCategory(1));
showCategory2();
ObservableList items = category2ListView.getItems();
int range = items.size();
for(int count = 0; count < range; count++){
String item = (String) items.get(count);
if(inventoryItem.getCategory(2).matches(item)){
category2ListView.scrollTo(count);
category2ListView.getSelectionModel().select(item);
category2ListView.getFocusModel().focus(count);
}
而這裏的「showCategory2()」以供參考:
public void showCategory2(){
String selectionString = category1ListView.getSelectionModel().getSelectedItem();
if(selectionString.matches("Art")) {
category2ListView = new ListView<String>(artList);
} else if (selectionString.matches("Books")){
category2ListView = new ListView<String>(booksList);
} else if (selectionString.matches("Decorative Accessores")){
category2ListView = new ListView<String>(decorativeAccessoriesList);
} else if (selectionString.matches("Floor Coverings")){
category2ListView = new ListView<String>(floorCoveringsList);
} else if (selectionString.matches("Furniture")){
category2ListView = new ListView<String>(furnitureList);
} else if (selectionString.matches("Kitchen & Tabletop")){
category2ListView = new ListView<String>(kitchenAndTabletopList);
} else if (selectionString.matches("Lighting")){
category2ListView = new ListView<String>(lightingList);
}
etc ...通過我的其他清單。有些列表中只有幾個項目,其他項目有7-15個項目,這比第二個listView中可以查看的項目要多。我不想改變列表視圖的大小以適應最大的列表。我寧願滾動適當的。
注:我已經扔在像代碼的一些測試位:
System.out.println("Selected item: "
+ category2ListView.getSelectionModel().getSelectedItem());
這表明先前選擇合適的項目......但第二列表視圖本身並不表示選擇哪個項目,它也不應該滾動到正確的項目。
任何想法?
編輯:經過我的代碼的一些測試後,我發現問題似乎只有當我也使用ListView.scrollTo()方法時纔會發生。如果我從代碼中刪除scrollTo方法,則列表視圖將正確顯示並突出顯示所選項目。
然而,這是相當不方便的,因爲它意味着我有比我的listView的大小更長的任何列表都不會向下滾動到所選項目。
針對javafx-jira中的列表視圖提出問題 –
所以......這是否意味着這是一個錯誤?有沒有其他人得到這些相同的結果? – Aaron
昨天我用javafx-jira提交了一個問題,但還沒有看到有關它的任何評論。通常需要幾天的時間才能收到答覆? – Aaron