タイトルが示すように、テーブル行のデータ内のブール値に基づいてテーブル行内のボタンを有効/無効にしようとしています。これまでのコードは次のとおりです。tablerow内のbooleanプロパティに基づいてボタンを有効/無効にする方法
col.setCellFactory(new Callback<TableColumn<ExampleRow, String>, TableCell<ExampleRow, String>>() {
@Override
public TableCell call(final TableColumn<ExampleRow, String> param){
final Button btn = new Button("Save");
final TableCell<ExampleRow, String> cell = new TableCell<ExampleRow, String>(){
@Override
public void updateItem(String item, boolean empty){
super.updateItem(item, empty);
if(empty){
setGraphic(null);
setText(null);
} else {
btn.setPrefWidth(col.getWidth());
btn.setPadding(Insets.EMPTY);
btn.setOnAction(event -> {
});
setGraphic(btn);
setText(null);
}
}
};
ExampleRow row = (ExampleRow)cell.getTableRow().getItem(); //NPE here
btn.setDisable(!row.hasChanged());
return cell;
}
});
残念ながら、私のコードは最終行から5番目に壊れています。私がその行を除外し、下の行をbtn.setDisable(true)
に変更すると、それはすばらしく機能します。ボタンが存在するデータに基づいてこのボタンを無効にするにはどうすればよいですか?
この列に使用する 'String'プロパティ(つまり、' item'として 'updateItem'メソッドに渡される値)は何ですか?あなたが使っているようには見えません。もしそうでなければ、列を 'TableColumn'にして、セルの値を 'ExampleRow'の' changed'プロパティにしてはどうですか?次に、 'updateItem'メソッドでボタンの無効状態を直接変更することができます。 –
これは私が[this](http://stackoverflow.com/questions/29489366/how-to-add-button-in-javafx-table-view)の質問で使用していた使用されていないダミーの文字列でした。 – Taelsin