dポイントプレゼントキャンペーン実施中!

はじめての質問となります。
宜しくお願いします。

現在、JavaFXでアプリケーションを作成しています。
やりたいことは、表(TableView)に1つチェックボックスカラムを設けて、
表外にあるボタン(削除ボタン)を押すと、どの行のチェックボックスが選択行のみ処理をしたいというものです。

ボタン押下アクションで、表中のチェックボックスが選択されている行の
データを削除するということをやりたいのですが、
★の部分でチェックボックスの選択結果(true・false)が
常時nullとなってしまします。

何か実装が足りないということがあると思っています。
恐れ入りますが、ヒントをご教授頂けたら幸いです。

以下に現状のコードを貼り付けます。

■FXML
<TableView fx:id="resultTbl" editable="true" layoutX="15.0" layoutY="150.0" prefHeight="500.0" prefWidth="400.0">
 <columns>
  <TableColumn fx:id="checkColumn" prefWidth="40.0" style="-fx-alignment: top-center;" />
  <TableColumn fx:id="statusColumn" prefWidth="75.0" style="-fx-alignment: top-center;" />
  <TableColumn fx:id="codeColumn" prefWidth="75.0" style="-fx-alignment: top-center;" />
 </columns>
</TableView>
<Button fx:id="delBtn" layoutX="207.0" layoutY="644.0" mnemonicParsing="false" onAction="#delAction" prefHeight="22.0" prefWidth="88.0" text="削除" />

■コントローラー
/**
* テーブル
*/
@FXML
private TableView<FxConvDataListTableRow> resultTbl;
/**
* 選択チェックボックスカラム
*/
@FXML
private TableColumn<FxConvDataListTableRow, Boolean> checkColumn;
/**
* 状態カラム
*/
@FXML
private TableColumn<FxConvDataListTableRow, String> statusColumn;
/**
* コードカラム
*/
@FXML
private TableColumn<FxConvDataListTableRow, String> codeColumn;

@Override
public void initialize(URL arg0, ResourceBundle arg1) {
 checkColumn.setCellFactory(CheckBoxTableCell.forTableColumn(checkColumn));
 checkColumn.setCellValueFactory(new PropertyValueFactory<FxConvDataListTableRow, Boolean>("check"));
 statusColumn.setCellValueFactory(new PropertyValueFactory<FxConvDataListTableRow, String>("status"));
 codeColumn.setCellValueFactory(new PropertyValueFactory<FxConvDataListTableRow, String>("code"));
}

/**
* 削除ボタン押下アクション
*/
public void delAction(){
 // 一覧を繰返し
 for(Iterator<FxConvDataListTableRow> i = resultTbl.getItems().iterator();i.hasNext();){
  // 一覧
  FxConvDataListTableRow iData = (FxConvDataListTableRow) i.next();
★ System.out.println(iData.getCheck() + ":" + iData.getCode());
 }
}

■データクラス(行データ)
public class FxConvDataListTableRow {
 /**
  * 選択
  */
 private Boolean check;
 /**
  * 状態
  */
 private String status;
 /**
  * コード
  */
 private String code;
 
 /**
  * @return check
  */
 public Boolean getCheck() {
  return check;
 }
 /**
  * @param check セットする check
  */
 public void setCheck(Boolean check) {
  this.check = check;
 }
 /**
  * @return status
  */
 public String getStatus() {
  return status;
 }
 /**
  * @param status セットする status
  */
 public void setStatus(String status) {
  this.status = status;
 }
 /**
  * @return code
  */
 public String getCode() {
  return code;
 }
 /**
  * @param code セットする code
  */
 public void setCode(String code) {
  this.code = code;
 }
}

「JavaFXでの表内のチェックボックス値」の質問画像

A 回答 (1件)

★でチェックだけがnull


なんでしたっけ。
ステータスとかコードのほうは。。。。

Booleanじゃなくて
booleanにするとか。
無理そうかな。
Initializeからみで無理か。。。

Initializeがなにやってんのか。よくわからんです。

行の元データは、どっからくるのか。
その大元のチェックの部分が。nullになってないか。。
画面上、チェックなしでも、
falseがはいって、そうでなく。
nullが入ってるなど。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!