首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从用户选择的数据库表在JavaFX中创建动态TableView

在JavaFX中创建动态TableView可以通过以下步骤实现:

  1. 导入必要的JavaFX库和数据库驱动程序。
  2. 连接到用户选择的数据库。可以使用Java中的JDBC API来实现数据库连接。
  3. 查询数据库以获取用户选择的表的元数据信息,例如表名、列名、数据类型等。可以使用JDBC的ResultSet对象来执行查询操作。
  4. 创建一个ObservableList对象,用于存储从数据库中检索到的数据。
  5. 创建一个TableView对象,并设置列数和列名。
  6. 将ObservableList对象中的数据添加到TableView中。
  7. 将TableView添加到JavaFX的场景图中,并显示在界面上。

下面是一个示例代码,演示如何从用户选择的数据库表创建动态TableView:

代码语言:txt
复制
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

import java.sql.*;

public class DynamicTableViewExample extends Application {

    private static final String DB_URL = "jdbc:mysql://localhost:3306/mydatabase";
    private static final String DB_USERNAME = "username";
    private static final String DB_PASSWORD = "password";

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        TableView<Object> tableView = new TableView<>();
        ObservableList<Object> data = FXCollections.observableArrayList();

        try (Connection connection = DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD)) {
            String tableName = "user_table"; // 用户选择的表名

            // 查询表的元数据信息
            DatabaseMetaData metaData = connection.getMetaData();
            ResultSet resultSet = metaData.getColumns(null, null, tableName, null);

            // 创建表的列
            while (resultSet.next()) {
                String columnName = resultSet.getString("COLUMN_NAME");
                TableColumn<Object, Object> column = new TableColumn<>(columnName);
                column.setCellValueFactory(new PropertyValueFactory<>(columnName));
                tableView.getColumns().add(column);
            }

            // 查询表的数据
            Statement statement = connection.createStatement();
            resultSet = statement.executeQuery("SELECT * FROM " + tableName);

            // 将数据添加到ObservableList中
            while (resultSet.next()) {
                // 根据表的列数创建一个JavaBean对象
                Object rowData = new Object();
                for (int i = 1; i <= tableView.getColumns().size(); i++) {
                    String columnName = tableView.getColumns().get(i - 1).getText();
                    Object value = resultSet.getObject(i);
                    // 使用反射将数据设置到JavaBean对象中
                    // ...

                    // 示例代码中使用Object作为JavaBean对象,实际应根据表的数据类型创建具体的JavaBean类
                }
                data.add(rowData);
            }

            tableView.setItems(data);
        } catch (SQLException e) {
            e.printStackTrace();
        }

        VBox root = new VBox(tableView);
        Scene scene = new Scene(root, 800, 600);
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}

这个示例代码假设使用MySQL数据库,并且数据库中已经存在名为"mydatabase"的数据库。请根据实际情况修改DB_URL、DB_USERNAME和DB_PASSWORD的值。

在这个示例中,用户选择的表名为"user_table",你可以根据实际需求修改为用户选择的表名。

对于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体的云计算品牌商,所以无法提供相关链接。但你可以根据自己的需求和实际情况,在腾讯云官方网站上查找相关产品和文档。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Excel小技巧41:Word创建对Excel动态链接

例如,我们可以Word中放置一个来自Excel,并且可以随着Excel数据变化而动态更新。...这需要在Word创建一个对Excel动态链接,允许Word文档自动获取Excel变化并更新数据。 例如下图1所示工作,其中放置了一个Excel,复制该。 ?...图1 打开Word文档,将光标放置到想要放置Excel数据位置。功能区“开始”选项卡选择“粘贴——选择性粘贴”命令,如下图2所示。 ?...图2 弹出选择性粘贴”对话框,选取“粘贴链接”并选择“形式”列表框“Microsoft Excel工作对象”,如下图3所示。 ?...图9 这样,每次要更新数据时,单击右键,快捷菜单中选择“更新链接”即可,如下图10所示。 ? 图10 实际上,当创建对单元格区域链接后,Word将会存储源数据字段信息,然后显示链接数据。

3.7K30

Using JavaFX UI Controls 12 Table View

很多JavaFX SDK API种类为表格表单呈现数据。JavaFX 应用创建表格最重要TableView, TableColumn和TableCell这三个类。...列通过TableColumn这个类创建TableView getColumns方法可以获取之前创建列。在你应用,你可以用此方法动态添加和移除表格列。...用户可以对表格多列进行排序,同样也可以指定每列数据排序操作优先级。如果想多行排列,用户按住Shift同时点击想要排序每一列列头。...将Map数据添加到表格 JavaFX SDK 2.2开始,你可以往表格添加Map类型数据。...例12-12,数据行 hash map(哈希map) 展现了TableView对象一个单行。

11.3K20

VBA实战技巧19:根据用户工作选择来隐藏显示功能区剪贴板组

excelperfect 有时候,我们可能想根据用户工作选择来决定隐藏或者显示功能区选项卡特定组,避免用户随意使用某些功能而破坏我们工作结构。 下面,我们通过一个示例来演示。...我们想让用户选择工作表列B任意单元格时,隐藏“开始”选项卡“剪贴板”组,而当用户选择其他单元格时,该组又重新显示,如下图1所示。 ?...图1:当用户选择单元格列B时,“剪贴板”组隐藏,处于其他单元格时,“剪贴板”组显示 首先,我们新建一个工作簿并保存。...图2:Custom UI Editor For Microsoft Office编辑输入XML 重新打开工作簿,按Alt+F11键打开VBA编辑器,插入一个标准模块,输入下面的代码: Public...) InRange =Not interSectRange Is Nothing Set interSectRange = Nothing End Function 双击工程资源管理器

4.1K10

C++ Qt开发:SqlRelationalTable关联组件

1.1 ComboBox首先我们来实现一个简单联动效果,数据库组件可以与ComboBox组件形成多级联动效果,日常开发多级联动效果应用非常广泛,例如当我们选择指定用户时,让其另一个ComboBox...进行联动之前需要创建两张结构内容介绍如下:User(id,name):存储指定用户ID号与用户名UserAddressList(id,name,address):与User用户名相关联...SqlComboBox案例,运行后可自行选择不同用户名,则此时会输出该用户名所对应地址,如下图所示;1.2 TableView接着,我们继续以TableView组件为例,简单介绍一下如何实现组件与数据绑定...,首先我们需要创建一个并插入几条测试记录,运行如下代码实现建库建.创建一张新结构内容介绍如下:LyShark(name,age):存储指定用户名与用户年龄主构造函数我们可以直接通过QSqlQueryModel...(QAbstractItemView::SelectRows);}运行代码后,程序会数据库内取出结果并输出到tableView组件上,如下图所示;1.3 SqlRelationalTable最开始我们也说过

18310

JavaFX——(第一篇:介绍篇)

方便Web开发人员使用JavaFX其他流行动态语言,例如JRuby,Groovy和JavaScript。...媒体引擎组件显示图1绿色部分,JavaFX 2进行了重新设计并且改进了性能,进行了相关扩展。...CSS JavaFX层叠样式(CSS)提供了定制样式应用能力用户界面的一个JavaFX应用程序,而无需更改任何应用程序源代码。...非常容易打包通过上面介绍几种方式。 跨平台。 与Java API相同API格式。 如何创建JavaFX应用 下载最新版本JDk并且支持JavaFX。 安装并且配置,按照向导创建一个简单应用。...如果您选择使用本教程外NetBeans IDE,有部分在本教程,强调需要做什么来连接布局,您构建样例应用程序Java源代码,应用样式,并运行样例应用程序使用Apache Ant实用程序。

5.6K60

C++ Qt开发:SqlTableModel映射组件应用

接下来章节,我们将学习如何配置 QSqlTableModel、与数据库进行交互、实现数据动态显示和编辑,首先读者应绘制好UI界面,本次案例界面稍显复杂,读者可自行完成如下案例绘制; 以下是 QSqlTableModel...setTable(const QString &tableName) 设置要操作数据库名。 select() 执行查询操作,数据库获取数据。...通过创建 QItemSelectionModel 对象 theSelection 并关联到 tabModel模型,将数据模型和选择模型关联到 ui->tableView,并设置选择模式为行选择模式。...,如下图所示; 1.2.4 插入一条记录 TableView 当前选择上方插入一行新记录,并自动生成编号。...使用这段代码之前,用户需要在 QComboBox 中选择一个字段,作为排序依据。以升序排序为例,输出效果如下图所示;

18410

C++ Qt开发:SqlTableModel映射组件应用

接下来章节,我们将学习如何配置 QSqlTableModel、与数据库进行交互、实现数据动态显示和编辑,首先读者应绘制好UI界面,本次案例界面稍显复杂,读者可自行完成如下案例绘制;以下是 QSqlTableModel...select() 执行查询操作,数据库获取数据。...1.1 初始化组件首先我们来看一下MainWindow初始化部分是如何工作,主要实现了以下功能:打开数据库首先使用SQLite数据库驱动连接名为"database.db"数据库文件。...,如下图所示;1.2.4 插入一条记录在 TableView 当前选择上方插入一行新记录,并自动生成编号。...使用这段代码之前,用户需要在 QComboBox 中选择一个字段,作为排序依据。以升序排序为例,输出效果如下图所示;

21300

C++ Qt开发:数据库TableView多组件联动

Qt,通常我们不会在TableView等组件中保存数据,一般会将这些数据存储至数据库或者是文件中保存,当使用时则动态数据库调出来,以下案例将实现,当用户点击并选中TableView组件内某一行时...要实现联动涉及几个主要步骤:建立数据库连接、创建模型、设置TableView、捕捉TableView选中信号、查询并关联数据、更新LineEdit和ListView,首先我们UI界面绘制所需控件,...用于存储学生所管理IP地址,我们将name进行关联,每个学生名下存储有不同地址; 创建两个结构总结起来代码如下所示,通过分别调用多次db.exec()函数实现创建数据,并通过QSqlQuery...这些方法使得 Qt 应用程序更容易实现数据模型和用户界面的交互,通过将数据模型字段映射到用户界面的小部件上,实现了数据显示和编辑同步。...这样,当用户表格中选择不同行时,将触发槽函数执行相应操作。

33210

CC++ Qt 数据库与SqlTableModel组件应用

SqlTableModel 组件可以将数据库特定字段动态显示TableView表格组件,通常设置QSqlTableModel类变量作为数据模型后就可以显示数据内容,界面组件则通过QDataWidgetMapper...类实例设置为与某个数据库字段相关联,则可以实现自动显示字段内容,不仅是显示,其还支持动态增删改查等各种复杂操作,期间不需要使用任何SQL语句。...先来生成数据库表记录,此处我们只需要增加一个Student学生,并插入两条测试数据即可,运行以下代码完成数据创建。...当用户点击TableView组件内某一行记录时,则触发MainWindow::on_currentRowChanged函数。...如果需要修改或增加特定行或记录我们只需要点击相应按钮,并在选中行直接编辑即可实现向数据库插入数据,而有时我们不希望通过上操作,而是通过新建窗体并在窗体完成增删改,此时就需要使用Dialog窗体并配合原生

89210

CC++ Qt 数据库与SqlTableModel组件应用

SqlTableModel 组件可以将数据库特定字段动态显示TableView表格组件,通常设置QSqlTableModel类变量作为数据模型后就可以显示数据内容,界面组件则通过QDataWidgetMapper...类实例设置为与某个数据库字段相关联,则可以实现自动显示字段内容,不仅是显示,其还支持动态增删改查等各种复杂操作,期间不需要使用任何SQL语句。...图片先来生成数据库表记录,此处我们只需要增加一个Student学生,并插入两条测试数据即可,运行以下代码完成数据创建。....图片当用户点击TableView组件内某一行记录时,则触发MainWindow::on_currentRowChanged函数。...如果需要修改或增加特定行或记录我们只需要点击相应按钮,并在选中行直接编辑即可实现向数据库插入数据,而有时我们不希望通过上操作,而是通过新建窗体并在窗体完成增删改,此时就需要使用Dialog窗体并配合原生

84930

基于 HTML5 Web SCADA 报表

但是现在通过各种移动 App 和 Web 应用熏陶,人们审美和要求都在不断提高,尤其是 Web 项目中,还采用老式数字表格确实也有点落伍了。  如何选择一个合适 HTML 前端表格控件?...开始 首先我们要做就是结合业务逻辑,对表格不同列数据,进行不同渲染。例如设备历史信息运行时间、停机时间等,比较适合用饼图来汇总展示,用户就可以很直观列表上对比出设备历史状况。 ...并采用前端分页方式, worker 获取当前页显示条目的相关数据。 主线程创建 Web Worker注册消息监听函数。...而且高并发情况下,频繁历史数据查询会对后端数据库造成很大压力。  采用前端分页,需要担心是数据量。整数据量太大,会造成第一次获取时加载太慢,前端资源占用过多。 ...类似 Demo 趋势刷新效果,我们可以创建表格时批量获取所有历史数据,然后再动态数据库获取当前页所需实时数据。

2.9K30

基于 HTML5 Web SCADA 报表

但是现在通过各种移动 App 和 Web 应用熏陶,人们审美和要求都在不断提高,尤其是 Web 项目中,还采用老式数字表格确实也有点落伍了。  如何选择一个合适 HTML 前端表格控件?...开始 首先我们要做就是结合业务逻辑,对表格不同列数据,进行不同渲染。例如设备历史信息运行时间、停机时间等,比较适合用饼图来汇总展示,用户就可以很直观列表上对比出设备历史状况。 ...并采用前端分页方式, worker 获取当前页显示条目的相关数据。 主线程创建 Web Worker注册消息监听函数。...而且高并发情况下,频繁历史数据查询会对后端数据库造成很大压力。  采用前端分页,需要担心是数据量。整数据量太大,会造成第一次获取时加载太慢,前端资源占用过多。 ...类似 Demo 趋势刷新效果,我们可以创建表格时批量获取所有历史数据,然后再动态数据库获取当前页所需实时数据。

3.5K90

iOS开发之视图爱上CoreData

CoreData负责Model实体和sqllite建立关联,数据模型实体类就相当于JavaJavaBean, 而CoreData功能和JavaEEHibernate功能类似,最基本是两者都有通过对实体操作来实现对数据库...下面会通个代码给出他们相爱原因。就举一个IOS开发经典demo:通讯录来说明问题。 1.TableView没遇到CoreData时候我们怎么通过动态视图来显示我们通讯录内容呢?...16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 /*  *手动创建我们动态视图上显示数据格式...(2)第二步:设置storyboard来启动, Main InterFace中选中我们创建storyboard即可 ?     ...中进行显示即可,tableViewperson对象获取相应头像,然后显示即可,下面我们要加上索引。

2.1K80

IOS开发之微信山寨版

在用到TableView既有静态TableView,也有动态TableView动态TableView主要用来显示我们数据,而静态TableView主要用来显示功能模块导航时使用。...3.不能只贴图片对吧,写程序是少不了代码第一个页面入手,如何动态加载我们TableView....进行编码之前,首先得配置我们cell模板,我们动态TableView中用到几种Cell,我们就配置几种cell模板,配置cell模板时要设置每个cellidentifier,便于代码根据不同数据来选择我们数据对应...下面是往我们动态TableViewcell添加数据     (1)我们相应TableViewController类创建我们测试数据,来模拟网络请求。...创建一个可变数组,往可变数组存入100个字典,字典里模拟用户信息。

1.3K50
领券