2013-07-24 27 views
0

這是我的問題。我有正常的文本列和2列下拉列表和一個複選框的表。這是我的電池廠回調下拉列:表格中的其他元素始終可見,即使沒有基礎數據

 Callback<TableColumn<Person, String>, TableCell<Person, String>> dropdownConditionCellFactory = 
        new Callback<TableColumn<Person, String>, TableCell<Person, String>>() { 
       @Override 
       public TableCell call(TableColumn p) { 
       Tools.Tables.ComboBoxCell<partCondition> cell = new Tools.Tables.ComboBoxCell<partCondition>(partConditionList) 

        return cell; 
       } 
      }; 

和類此單元格工廠:

公共靜態類ComboBoxCell擴展的TableCell {

private ComboBox combo; 

    public ComboBoxCell() { 
     combo = new ComboBox(); 
     setGraphic(combo); 
     setContentDisplay(ContentDisplay.GRAPHIC_ONLY); 

    } 

    public ComboBoxCell(ObservableList items) { 
     combo = new ComboBox(); 
     combo.setItems(items); 
     setGraphic(combo); 
     setContentDisplay(ContentDisplay.GRAPHIC_ONLY); 
     combo.getSelectionModel().selectFirst(); 
    } 

    public T getSelectedItem() 
    { 
     return (T) combo.getSelectionModel().getSelectedItem(); 
    } 

    public void setSelectedItem(T t) 
    { 
     combo.getSelectionModel().select(t); 
    } 
} 

我的問題是,當表是相當大,只有2排,無論如何都會產生下拉列表,它看起來像這樣:

enter image description here

有沒有一種方法可以生成儘可能多的下拉列表和複選框,這與可見列表中提供此表的多個項目相同?

回答

1

在使用單元格時,請事先閱讀Cell API,以瞭解它們是如何在引擎蓋下處理的。簡而言之,單元格被重用於不同的行以呈現不同的項目/記錄。每次單元格被重用時,將調用其updateItem()方法來刷新單元格呈現的項目。因此,你需要重寫此方法並控制在那裏graphic,而不是在構造函數中:

private ComboBox combo; 

    public ComboBoxCell() { 
     combo = new ComboBox(); 
    } 

    public ComboBoxCell(ObservableList items) { 
     combo = new ComboBox(); 
     combo.setItems(items); 
    } 

    @Override 
    public void updateItem(String item, boolean empty) { 
     super.updateItem(item, empty); 

     if (empty) { 
      setText(null); 
      setGraphic(null); 
     } else { 
      combo.getSelectionModel().select(item); 
      setGraphic(combo); 
      setContentDisplay(ContentDisplay.GRAPHIC_ONLY); 
     } 
    } 
+0

這種方法效果很好,除非列出的是很長。然後元素開始隨機消失(Famous Javafx tableview problem,在這裏討論:http://stackoverflow.com/questions/13469661/textfield-inside-tableview-gone-after-scroll-javafx/18019529#18019529) 也許有解決這個問題的另一種方法,也許與CSS? – Damian

相關問題