java - JavaFX 中的默认表模型

标签 java javafx tableview defaulttablemodel

我在尝试从 JavaFX 中的 TableView 中选择单行时遇到了一些问题。

以下是我如何使用数据库中的数据填充表:

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 代码时,出现错误。它告诉我找不到符号 符号:方法 setSelectionMode(int) 位置:类TableView

我记得当我在JavaSwing中做表格时,我用它来设置表格的模型:DefaultTableModel tableModel = (DefaultTableModel) jTable.getModel();

但是,我无法在 javaFX 中执行此操作。有人可以帮我解决这个问题吗?

提前致谢。

最佳答案

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);
    }
});

关于java - JavaFX 中的默认表模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17316328/

相关文章:

java - JAX-WS 拦截运行时异常以进行日志记录

JavaFX Canvas 无法在 StackPane 内正确调整大小

ios - 第一个 TableView 单元格没有正确出队

iPhone - 内部有 TextView 和表格 View 的 ScrollView

java - 是否有将 Java POJO 转换为 JSON 和 XML 的库?

java - 期待 : Trouble implementing a sudo -i

java - actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS) 弃用

java - 如何仅从 JavaFx 图表中的选定系列中删除符号标记?

java - 如何在不使用 .stopAndWait 方法的情况下使用 Javafx 中警报中的按钮?

ios - 如何使用Query.limit和Query.skip?