1

JavaFX でテーブル ビューから単一の行を選択しようとしたときに問題が発生しました。

データベースからのデータをテーブルに入力する方法は次のとおりです。

public void populateCategoryTable() {
    data = FXCollections.observableArrayList();
    try {
        db.getConnection();
        String sql = "SELECT * FROM sm_category";
        ResultSet rs = null;
        // Call readRequest to get the result
        rs = db.readRequest(sql);

        while (rs.next()) {
            ObservableList<String> row = FXCollections.observableArrayList();
            //All the rows are added here dynamically 
            row.add(rs.getString("categoryID"));
            data.add(row);
        }
        viewCategory.setItems(data);
        rs.close();
    } catch (SQLException ex) {
        ex.printStackTrace();
        System.out.println("Error SQL!!!");
        System.exit(0);
    }

    TableColumn id = new TableColumn("ID");
    id.setVisible(false);
    id.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<ObservableList, String>, ObservableValue<String>>() {
        public ObservableValue<String> call(TableColumn.CellDataFeatures<ObservableList, String> param) {
            return new SimpleStringProperty(param.getValue().get(0).toString());
        }
    });

    viewCategory.getColumns().addAll(id);

    TableView.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); //Error here
    TableView.TableViewSelectionModel selectionModel = viewCategory.getSelectionModel();
    ObservableList selectedCells = selectionModel.getSelectedCells();
    TablePosition tablePosition = (TablePosition) selectedCells.get(0);
    int row = tablePosition.getRow(); // yields the row that the currently selected cell is in

}

しかし、setSelectionMode コードを挿入しようとすると、エラーが発生します。シンボルが見つからないことがわかります symbol: method setSelectionMode(int) location: class TableView

JavaSwing でテーブルを作成したとき、これを使用してテーブルのモデルを設定したことを覚えています。

ただし、javaFX でこれを行うことはできません。誰かがこれを修正するのを手伝ってくれますか?

前もって感謝します。

4

1 に答える 1

1

tableview のデフォルトの選択モードは ですSelectionMode.SINGLE。複数の試行に変更するには

tableView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);

>私がやろうとしているのは、テーブルから単一の行を選択してインデックスを取得することです

選択したインデックスを取得するには:

viewCategory.getSelectionModel().getSelectedIndex();

インデックスの変更をリッスンするには:

viewCategory.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener<Number>() {
    @Override
    public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
        System.out.println("index changed from " + oldValue + " to " + newValue);
    }
});
于 2013-06-26T10:22:00.840 に答える