2014-10-07 1 views
0

Предположим, у меня есть 2 столбца в TreeTableView, и теперь я хочу добавить строку/ярлык в первом столбце и ProgressBar в другой. Как бы я сделал что-то подобное?JavaFX: добавьте элемент управления пользовательского интерфейса в TreeTableView

Действительно оцените любую помощь!

+0

См. Http://stackoverflow.com/questions/16721380/javafx-update-progressbar-in-tableview-from-task, который делает то же самое для 'TableView' –

ответ

0

Как правильно указал James_D, вы можете использовать ProgressBarTreeTableCell для столбца с ProgressBars. Существует внутренние опоры для некоторых других элементов управления пользовательского интерфейса, такие как TextField, CheckBox и т.д.

Для других элементов управления пользовательского интерфейса вы можете создать собственный TreeTableCell , как показано:

private class ProgressCell extends TreeTableCell<Employee, String> { 

    final ProgressBar progress = new ProgressBar(); 

     ProgressCell() { 
     } 

     @Override 
     protected void updateItem(String t, boolean empty) { 
      super.updateItem(t, empty); 
      if (!empty) { 
       setGraphic(progress); 
      } 
    } 
} 

и затем назначьте CellFactory ко второму столбцу

secondCol.setCellFactory(
     new Callback<TreeTableColumn<Employee, String>, TreeTableCell<Employee, String>>() { 
      @Override 
      public TreeTableCell<Employee, String> call(
       TreeTableColumn<Employee, String> param) { 
        return new ProgressCell(); 
       } 
}); 

где Employee класс POJO, на котором табличного дерева построен

+1

Всегда проверяйте [API] (http: // docs .oracle.com/javase/8/javafx/api/javafx/scene/control/cell/ProgressBarTreeTableCell.html) сначала;) –

+1

'ProgressBarTreeTableCell', это круто. Пусть OP использует это для тех элементов управления, чьи CellFactories не предоставляются JavaFX ;-) – ItachiUchiha