2016-05-23 16 views
0

Javafxでは、以下のようなチェックボックスタイプでTableColumnを定義しました。javafxのTableColumn内のチェックボックスでonclickイベントをトリガする方法

TableColumn<MyObject, Boolean> cbCol = new TableColumn<>(strColName); 
cbCol.setCellFactory(CheckBoxCellFactory.forTableColumn(cbCol)); 

今私はTableColumnの内部でクリックされたチェックボックスのいずれかで(いくつかの操作を実行するために)のonclickイベントをトリガする必要があります。これを達成する方法はありますか?

どのようなヘルプも大幅に強化されています。

答えて

0

tableCellcheckboxesを取得するために、以下のセルストームのセル工場を使用しています。同じものを使用して、ここでもonClickリスナーを持つことができます。後述するように

final class BooleanCell extends TableCell<MyObject, Boolean> { 

private CheckBox checkBox; 

public BooleanCell() { 
    checkBox = new CheckBox(); 
    checkBox.setOnAction((evt) -> { 

     getTableView().getItems().get(getIndex()).setCheck(new SimpleBooleanProperty(checkBox.isSelected())); 

     } 
    }); 
    this.setGraphic(checkBox); 
    this.setContentDisplay(ContentDisplay.GRAPHIC_ONLY); 
    this.setEditable(true); 
} 

@Override 
public void startEdit() { 
    super.startEdit(); 
    if (isEmpty()) { 
     return; 
    } 
    checkBox.requestFocus(); 
} 

@Override 
public void cancelEdit() { 
    super.cancelEdit(); 
//   checkBox.setDisable(true); 
} 

@Override 
public void commitEdit(Boolean value) { 
    super.commitEdit(value); 
//   checkBox.setDisable(true); 
} 

@Override 
public void updateItem(Boolean item, boolean empty) { 
    super.updateItem(item, empty); 
    if (empty) { 
     setGraphic(null); 
    } else { 
     if (item != null) { 
      checkBox.setAlignment(Pos.CENTER); 
      checkBox.setSelected(item); 
     } 
     setAlignment(Pos.CENTER); 
     setGraphic(checkBox); 
    } 
} 
} 

上記cell factorytableColumnに適用することができる。以下のコードです。

Callback<TableColumn<MyObject, Boolean>, TableCell<MyObject, Boolean>> booleanCellFactory = new Callback<TableColumn<MyObject, Boolean>, TableCell<MyObject, Boolean>>() { 
       @Override 
       public TableCell<MyObject, Boolean> call(TableColumn<MyObject, Boolean> p) { 
        return new BooleanCell(); 
       } 
      }; 

tbColCheck.setCellFactory(booleanCellFactory); 
関連する問題