【问题标题】:JavaFX 2.0 TableView in FXML with Data from Database带有数据库数据的 FXML 中的 JavaFX 2.0 TableView
【发布时间】:2012-05-20 19:03:54
【问题描述】:

我想知道如何将 mysql 数据库中的数据检索到 fxml 文件中的 tableview 中。我必须检索数据并将其放入位于 fxml 文件中的 tableview 中。我知道如何连接到数据库,但我不知道如何检索数据并将其放入 tableview。

tableview 位于 fxml 文件中。如果我还在这里,有人知道我导入数据后如何编辑此表格视图中的单元格吗?

我使用的应用程序是桌面应用程序!

【问题讨论】:

    标签: database tableview javafx-2 fxml


    【解决方案1】:

    有几种方法可以做到这一点,一种是使用来自DataFX的JDBC适配器。

    更新

    FXML 本身只是定义了一个基于 xml 的 UI 结构,它不能从数据库中加载数据。

    当数据源自数据库时,在大多数情况下,创建包含数据值的静态 fxml 文件可能不是一个好主意。每当数据库中的数据发生变化时,您都需要生成并加载一个新的 fxml 文件,为此您需要手动创建新文件或编写一个脆弱的程序来根据数据中的数据生成新的 fxml 文件数据库。

    建议的方法:

    1. 仅使用 fxml 来定义您的 TableView 结构,而不是包含实际的数据值。
    2. 在您的 JavaFX Java 代码中连接到 mysql 数据库。
    3. 使用 DataFX JDBC 数据源适配器从数据库中检索数据并填充您的 TableView。

    您可以编写自己的代码来执行第 3 步。如果您希望使用 JPA(我认为 DataFX 目前不直接支持),使用您自己的代码可能是一个好主意。否则,您可能会使用 DataFX 实现更快地获得更好的结果。

    要了解如何在 TableView 中进行编辑,请阅读TableView tutorial。同样,DataFX 将通过提供Control Cell Factories 来帮助您进行编辑 - 所以我建议使用 DataFX 来完成此操作,而不是手动编码 TableView 编辑处理。

    我不确定当您需要对数据库进行编辑时,DataFX 代码是否会帮助您;在这种情况下,您可能需要添加自己的 JDBC 或 JPA 代码来提交更改。

    【讨论】:

    • 我看到了 API,但我需要一些用于 fxml 文件的东西。我想从 fxml 加载数据!谢谢
    • 添加了关于为什么 fxml 无法从数据库加载数据的更新,并添加了详细的建议方法。
    • 你有一些关于如何使用JDBC数据源适配器来检索数据的sn-ps吗?
    【解决方案2】:

    AFAIK,您无法在 FXML 文件中检索和显示来自 DB 的数据,并使表格视图单元格在 FXML 文件中可编辑。即使有可能(可能部分通过自定义BuilderBuilderFactory),但在MVC 的意义上不建议这样做。请先阅读Why Use FXML 及其好处。如果有必要,您仍然可以在 FXML 文件中定义一些基本数据结构,请参阅Introduction to FXML
    在控制器的initialize() 方法中执行与视图无关的任务,即检索数据并设置表视图的项目。自定义表格列的单元工厂,支持编辑等。

    【讨论】:

    • 所以我可以从 fxml 控制器做到这一点,据我所知!对吗?
    猜你喜欢
    • 2016-02-16
    • 1970-01-01
    • 2016-11-18
    • 1970-01-01
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    • 2016-04-07
    • 2017-01-20
    相关资源
    最近更新 更多