2016-07-28 3 views
0

Я хочу отключить/включить кнопки под BorderPane при завершении процесса в выбранной строке.Кнопки обновления JavaFX при завершении выбранного процесса в TableView

Я стараюсь это

downloadTable.getSelectionModel().getSelectedIndices().addListener(new ListChangeListener<Integer>() { 
     @Override 
     public void onChanged(Change<? extends Integer> c) { 
      int selectedIndex = downloadTable.getSelectionModel().getSelectedIndex(); 
      if (downloadTable.getItems().get(selectedIndex).getStatus() == Download.DOWNLOADING) { 
       cancelButton.setDisable(false); 
      } else { 
       cancelButton.setDisable(true); 
      } 

     } 
    }); 

, но она работает только тогда, когда я переключаюсь на элементы (скачать), который уже закончился. Что я хочу сделать, так это включить/отключить кнопки при выборе элемента. Спасибо всем

example of ended download with cancelButton that I want to disable

+0

Можете ли вы показать класс модели для таблицы? –

ответ

0

Может быть что-то, как это может помочь вам:

public class Main { 

    private Button someButton; 
    private TableView<?> downloadTable; 

    private void someMethod() { 
     //somecode 
     Callback<TableView<?>, TableRow<?>> baseFactory = downloadTable.getRowFactory(); 
     downloadTable.setRowFactory(new CustomRowFactory<?>(someButton, baseFactory)); 
     //somecode 
    } 

} 

public class CustomRowFactory<T> implements Callback<TableView<T>, TableRow<T>> { 

    private final Callback<TableView<T>, TableRow<T>> baseFactory; 
    private final Button someButton; 

    public CustromRowFactory(Button someButton, Callback<TableView<T>, TableRow<T>> baseFactory) { 
     this.someButton = somButton; 
     this.baseFactory = baseFactory; 
    } 

    @Override 
    public TableRow<T> call(TableView<T> tableView) { 
     final TableRow<T> row = baseFactory == null ? row = new TableRow<>() : row = baseFactory.call(tableView); 
     someButton.disableProperty().bind(
      row.selectedProperty().and(row.getItem().statusProperty().isNotEquals(Download.DOWNLOADING)) 
     ); 
     return row; 
    } 

} 

или улиткой в ​​некоторых из ваших TableCell реализации.

Смежные вопросы