###前提・実現したいこと
TableViewの列をCheckBoxにしてCheckBoxの値が変わったらデータベースを更新したいのですが、
CheckBoxの値が変わったことを知らせるイベントが発生しません。
CheckBoxのON/OFFは見かけ上できているのですが、CheckBoxのイベントハンドラには
何も飛んでこないので、データベースの更新まで辿り着けません。
ネットで見つけたサンプルを見よう見まねで実装したので何か抜けがあるのかもしれませんが、
どのような原因が考えられるでしょうか?
###該当のソースコード
XML
1 <TableView fx:id="CheckTable" editable="true" layoutX="24.0" layoutY="60.0" prefHeight="908.0" prefWidth="392.0"> 2 <columns> 3 <TableColumn minWidth="-Infinity" prefWidth="46.0" resizable="false" text="適用" /> 4 <TableColumn editable="false" minWidth="77.0" prefWidth="144.0" text="名称" /> 5 </columns> 6</TableView>
Java
1 2 @FXML 3 private TableView<CheckName> CheckTable; 4 5 @Override 6 public void initialize(URL url, ResourceBundle rb) { 7 ObservableList<TableColumn<CheckName, ?>> cols = this.CheckTable.getColumns(); 8 cols.get(0).setCellValueFactory(new PropertyValueFactory<>("check")); 9 cols.get(1).setCellValueFactory(new PropertyValueFactory<>("name")); 10 11 ObservableList<CheckName> data = FXCollections.observableArrayList(); 12 this.CheckTable.setItems(data); 13 14 ((TableColumn<CheckName, Boolean>)cols.get(0)).setCellFactory(new Callback<TableColumn<CheckName, Boolean>, TableCell<CheckName, Boolean>>() { 15 public TableCell<CheckName, Boolean> call(TableColumn<CheckName, Boolean> p) { 16 CheckBoxTableCell cb = new CheckBoxTableCell<CheckName, Boolean>(); 17 18 cb.selectedProperty().addListener(new ChangeListener<Boolean>() { 19 @Override 20 public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) { 21 // ここまで辿り着かない 22 } 23 }); 24 return cb; 25 } 26 }); 27 28// 以降でObservableList<CheckName>にデータを入れる 29
Java
1public class CheckName { 2 private int No; // 関連番号 3 private BooleanProperty Check; 4 private StringProperty Name; 5 6 7 public ScheduleDataFacility() { 8 this.Check = new SimpleBooleanProperty(); 9 this.Name = new SimpleStringProperty(); 10 11 } 12 public ScheduleDataFacility(int no, boolean Schedule, String Name) { 13 this.No = no; 14 this.Check = new SimpleBooleanProperty(Schedule); 15 this.Name = new SimpleStringProperty(Name); 16 } 17 18 public int getNo() {return this.No;}; 19 public BooleanProperty checkProperty() { return Check; } 20 public StringProperty facilityProperty() { return Name; } 21 22 23 24 public void setNo(int no) {this.No = no;} 25 public void setCheck(Boolean Check) { this.Check.set(Check); } 26 public void setFacility(String Name) { this.Name.set(Name); } 27} 28コード
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。