当前位置: 首页 > 知识库问答 >
问题:

JavaFX中的默认表模型

吕英才
2023-03-14

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

我记得当我在JavaSwing中创建table时,我用它为table设置了一个模型:DefaultTableModel tableModel=(DefaultTableModel)jTable。getModel();

但是,我不能在javaFX中做到这一点。有人能帮我解决这个问题吗?

提前谢谢。

共有1个答案

公良飞尘
2023-03-14

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);
    }
});
 类似资料:
  • 所以我才刚刚开始学习JavaFX,我用场景构建器做了几个文本字段。我为每个TextField分配了一些提示文本,但是当我启动应用程序时,第一个TextField已经被选中,所以我看不到提示文本。我能做点什么吗?

  • 问题内容: 假设我有一个模型: 目前,我正在使用默认的admin创建/编辑此类型的对象。如何从管理员中删除该字段,以使每个对象都无法使用值创建,而是将接收默认值? 问题答案: 设置为和为默认值。 http://docs.djangoproject.com/en/dev/ref/models/fields/#editable 另外,你的字段是不必要的。Django将自动添加它。

  • 我想删除或更改空javafx表显示的默认文本,将其从改为对用户更有意义的内容。 例如,在一个显示学生的表中,当没有学生要显示时,我希望它对一个课程表说“数据库中没有学生”或“学生没有课程”。我不知道这在javafx中是否可能,或者通过java代码,使用场景构建器,或者通过在IDE中编辑.fxml文件。到目前为止,我已经在scene builder中查看了tableview的属性,但我没有看到本文的

  • 问题内容: 我有以下模型代码: 但是我希望,它将生成类似 这没有发生,当我运行它时会产生: 深入研究的代码并进行谷歌搜索没有给我任何好处,但是James Bennet的注释不被认为会影响生成,但是Django管理员需要它。即使是这样,我如何获得理想的效果? 我的版本是1.3.0最终版 问题答案: 请注意,该参数也可以采用可调用对象:https : //docs.djangoproject.com/

  • 注意 当前章节中涉及的配置一般适用于关系数据库。这里展示的扩展方法在你安装了关系数据库提供程序之后就能获得(由Microsoft.EntityFrmeworkCore.Relational 程序包共享)。 默认模式是在未显示配置对象的数据库模式时其将被创建到的数据库模式。 惯例 按照惯例,数据库提供程序将会选择最合适的默认模式。比如,Microsoft SQL Server 会使用 dbo 模式,

  • 是的,我知道,这听起来很愚蠢。但在我说明我的问题之前。 我有一个包含大量 J 表的 GUI。我有各种默认表模型,每个JTable一个。所以,1:1。对于每个默认表模型,我都创建了一个表模型管理器。 对于在GUI中插入和删除元素,我只创建了两个方法,addVehicle和removeVehicle: 这些方法是完美的,自动识别正确的表模型。 但我有一个必要性:因为我有很多JTable(和相应的Def