如何使用 JavaFX TableView 显示基于列的数据集

2023-12-10

我正在尝试从 Swing 切换到 JavaFX,但 TableView 出现问题。

我在内存中有一个基于列的通用数据结构,例如List<DataColumn> dataColumns = new ArrayList<DataColumn>();

where DataColumn是一个表列,它是基元数组的包装器。为了JTable我已经实现了一个自定义 TableModel 来处理这个数据结构。

我在 TableView 中看到的所有内容都是基于行列表而不是列。

如何使用 TableView 可视化此类数据而不将其复制到基于行的数据结构中?谢谢。


这是一个非常简单的示例,使用基于列的数据;也许这足以让你继续下去。本例的基本思想是使表类型Integer,因此每列的值是由工厂计算的,该工厂仅将索引映射到DataColumn结构,并检索索引的相应值。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import javafx.application.Application;
import javafx.beans.property.ReadOnlyIntegerWrapper;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class ColumnBasedTable extends Application {

    @Override
    public void start(Stage primaryStage) {
        final int numRows = 20 ;
        final int numCols = 12 ;

        List<DataColumn<Integer>> data = new ArrayList<>();

        for (int colIndex = 1; colIndex <= numCols; colIndex++) {
            Integer[] colData = new Integer[numRows];
            for (int rowIndex = 0; rowIndex < numRows; rowIndex++) {
                colData[rowIndex] = (rowIndex+1)*colIndex ;
            }
            DataColumn<Integer> dataColumn = new DataColumn<>(colData);
            data.add(dataColumn);
        }

        TableView<Integer> table = new TableView<>();
        for (int i=0; i<numRows; i++) {
            table.getItems().add(i);
        }

        for (int i=0; i<numCols; i++) {
            TableColumn<Integer, Number> col = new TableColumn<>(Integer.toString(i+1));
            final int colIndex = i ;
            col.setCellValueFactory(cellData -> {
                int rowIndex = cellData.getValue();
                DataColumn<Integer> dataColumn = data.get(colIndex);
                return new ReadOnlyIntegerWrapper(dataColumn.getData(rowIndex));
            });
            table.getColumns().add(col);
        }

        primaryStage.setScene(new Scene(new BorderPane(table), 600, 400));
        primaryStage.show();
    }

    public static class DataColumn<T> {
        private final T[] data ;
        public DataColumn(T[] data) {
            this.data = Arrays.copyOf(data, data.length);
        }
        public T getData(int index) {
            return data[index];
        }
        public int getSize() {
            return data.length ;
        }
    }

    public static void main(String[] args) {
        launch(args);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 JavaFX TableView 显示基于列的数据集 的相关文章

  • FXML load() 期间出现 JavaFX IllegalAccessException

    我有一个由以下代码调用的对话框窗口 DialogController是使用模式对话框窗口的辅助类 它主要将控制器引用与其窗口捆绑在一起 void handleServicesEdit ActionEvent event throws IOE
  • 将两个表视图绑定在一起,以便它们同步滚动

    我想将两个表视图绑定在一起 以便它们同步滚动 我怎么做 我无法找到如何访问表格视图的滚动条 我做了一个CSS hack来将Tableview与外部滚动条绑定 一个滚动条控制两个表格视图 我的想法的概述 创建两个表视图 制作一个垂直滚动条 在
  • 有没有办法设置独立 TableView 列的样式?

    我可以使用 CSS 来设置单元格样式 但如果我只想为一列使用不同的样式 例如使用不同的文本颜色 怎么办 也许我错过了一些东西 你应该使用TableColumn setCellFactory http docs oracle com java
  • JavaFX - 如何检测 Windows 注销/关闭请求?

    我有一个应用程序必须在退出时处理一些方法 但是 当用户在没有先关闭我的应用程序的情况下关闭 Windows 时 Windows 会终止该应用程序并且不会运行关闭方法 如何检测用户何时请求关闭或注销 Windows 我需要运行的方法需要几毫秒
  • 尝试让 GUI 使用 arrayList 在牌组中打印随机卡

    所以我目前正在用java开发一个卡牌战争游戏 我试图让 GUI 屏幕使用 arrayList 从一组卡片图像中打印 2 张随机卡片 必须使用它进行分配 卡片图像文件名为 1 png 2 png 52 png 并存储在 image card
  • Swift 4.2 当键盘显示时使 tableView 的底部向上移动

    尽管我已经进行了搜索 但我对如何最好地解决这个问题感到困惑 我有一个 tableView 其中底部单元格是列表的输入 就像苹果提醒的工作方式一样 当列表中的项目太多时 键盘会覆盖列表 我看不到正在输入的内容 我认为我需要更改表视图的物理大小
  • 检测 TableView JavaFX 行上的双击

    我需要检测 a 的一行上的双击TableView 如何监听该行任何部分的双击并获取该行的所有数据并将其打印到控制台 TableView
  • JavaFX中如何获取鼠标位置?

    我是java fx 的初学者 如何在 JavaFX 中获取鼠标在 x 和 y 中的位置 我尝试使用 AWTMouseInfo 也导入了它 但它不起作用 我还在 Ensembles 中看到了它的代码 在 高级阶段 拖动球窗口 这就是我需要做的
  • 无法解析符号“javafx.scene.web”

    使用Intellij 2021 3 2 JavaFX版本 11 0 2 1 我正在尝试将 JavaFX WebView 添加到我的应用程序中 我的导入语句无法编译 import javafx scene web 编译错误 java 找不到符
  • 如何让 UITableview 在重新加载时转到页面顶部?

    当我调用以下命令时重新加载表数据时 我试图让 UITableview 转到页面顶部 void pickerView UIPickerView pickerView didSelectRow NSInteger row inComponent
  • 如何根据 JavaFX 8 中的特定祖先获取节点边界?

    我在 AnchorPane 中添加了一个图表 我想获取其绘图的范围 图表 我用青色标记 这样我就可以在它上面添加一些文本 但我应该根据它的祖先知道它的确切边界 如果我手动执行此操作 则在调整大小等时更改节点的填充大小时 我可能会失败 imp
  • 调用了 numberOfRowsInSection 但未调用 cellForRowAtIndexPath

    在我的表视图中节中的行数被调用两次但是cellForRowAtIndexPath不叫 我想在 tableView 中显示 Facebook 好友列表 如果 cellForRowAtIndexPath 调用我的问题就解决了 我在这里的数组中得
  • JavaFX使节点覆盖父节点边框颜色

    我有一个如下所示的节点 仅使用 css 我希望标签覆盖其父边框颜色 因此标签下方的边框颜色部分变得不可见 我用来制作这个边框的CSS代码 fx border color black fx border width 3 fx border r
  • 如何从 JavaFX 中的另一个控制器类访问 UI 元素?

    我有一个使用 NetBeans 8 编写的 JavaFX Java 8 应用程序 没有SceneBuilder 我的应用程序有一个主窗口 该窗口有自己的 FXML 文件 primary fxml 和自己的控制器类 FXMLPrimaryCo
  • JavaFX:将像素写入 PixelWriter 的最快方法

    我正在寻找最快的方式来写入像素javafx scene image Image 写信给BufferedImage的后备数组要快得多 至少在我制作的测试图像上 只花了大约 20 毫秒BufferedImage WritableImage另一方
  • Hibernate + SQLite 不创建数据库

    这是我的问题 我有一个使用 JavaFX Hibernate SQLite 的桌面应用程序 这是我的模型 Entity Table name usuario public class Usuario implements AbstractM
  • 如何从表列javafx中删除行

    这些是我的表格列 Course and 描述 如果单击一行 该行变为 活动 突出显示 并且他们按下Delete按钮它应该删除该行 我该怎么做 我的代码Course列 以及我要添加什么事件侦听器到我的delete按钮 SuppressWarn
  • 复选框选择与 TableView 绑定

    How to bind with TableView selection model with checkbox isSelected in table view In manually using mouse multiple selec
  • 从 IntelliJ 运行 JavaFX 应用程序

    Versions openjdk版本 11 0 11 2021 04 20 OpenJDK 运行时环境 build 11 0 11 9 Ubuntu 0ubuntu2 20 10 OpenJDK 64 位服务器虚拟机 内部版本 11 0 1
  • 根据 Swift 中的列表选择在 ViewController 之间传递值

    我试图将 listView 选择的选定索引号从一个 ViewController 传递到另一个 ViewController 但遇到了 tableView didSelectRowAtIndexPath 委托运行时间稍晚于prepareFo

随机推荐

  • Openlayers 中的 KML 图层无法在本地主机上运行

    我在 OpenLayers 中渲染 KML 文件时遇到奇怪的问题 这似乎很容易 但事实并非如此 我从这里开始一个例子OpenLayer 示例 我想添加我自己的 KML 它不起作用 我使用绝对 URL 创建了该示例的本地副本 如下所示
  • 使用自定义小部件 kivy

    我正在尝试使用一些自定义小部件构建一个 kivy 应用程序 然而 每当我尝试使用它们时 它们都不会与我的布局配合使用 使用普通按钮 import kivy kivy require 1 8 0 from kivy app import Ap
  • python特定频率去除(陷波滤波器)?

    complie by python3 only test py import pyaudio import numpy as np import wave import time import math from pydub import
  • 如何从 PHP 中的 URL 字符串中提取查询参数?

    用户可以在我的网站上使用 HTML 表单输入 URL 因此他们可能会输入如下内容 它可以是任何东西 我需要提取某个查询参数的值 在本例中为 test 值 123 有没有办法做到这一点 您可以使用parse url and parse str
  • 检测客户端是平板电脑还是手机的最佳方法是什么?

    我目前正在开发一个客户端应用程序 该应用程序将为智能手机和平板电脑设计 因此它将得到两种不同的布局模式 虽然用户可以在两种模式之间切换 但我必须在第一次使用该应用程序时预先设置模式 因此 我正在寻找一种可靠的方法来自动检测用户是否带有平板电
  • 如何打印未读答案中的邮件正文和主题?

    我想获取收件箱中未读邮件的邮件主题和正文 我想一次阅读一封未读邮件并将其标记为read然后 我需要subject 发件人地址 and 邮件正文 下面的代码显示了所有未读邮件的邮件 ID require once mail3 php ews
  • Javascript 函数不等待 AJAX 响应

    我有一个名为的 AJAX 函数flagIt 它是从另一个名为的函数中调用的validateForm validateForm 在提交时执行 function validateForm var error do stuff to valida
  • 如何避免 spring-boot-admin 中的证书验证?

    如何避免 spring boot admin 中的证书验证 链接错误图片 https ibb co fkZu8y 我配置 RestTemplate 以避免在类中使用证书 但我不知道如何发送它 我猜它必须在客户端中 spring boot a
  • python 刷新/重新加载

    这是一个非常基本的问题 但我无法通过在线搜索找到答案 我正在使用 python 来控制 ArcGIS 并且我有一个简单的 python 脚本 它调用一些预先编写的代码 但是 当我对预先编写的代码进行更改时 它似乎不会导致任何更改 我导入这个
  • 通过 USB 将文件从 PC 传输到 Android 设备

    我想以编程方式通过 USB 将文件从我的电脑的特定端口传输到 Android 设备 以下哪种技术最适合这种传输模式 Sockets HttpUrlConnection 如果可以通过HttpUrlConnection意思是如何实现这个 通过
  • JavaFX自动滚动自动更新文本

    关于 JavaFX 的新手问题 我无法回答 尽管我知道它一定非常简单 而且在我看过的任何地方都没有找到任何资源 教程 许多 Oracle 在线文档 文章 以及知名JavaFX博主等 我正在开发一个命令行 脚本 运行的应用程序 并且我已经成功
  • constexpr 静态数据成员给出未定义的引用错误

    我正在开发内核 我想创建我的静态数据成员constexpr所以我可以在一个enum class 但是 如果我这样做 我会收到未定义的参考错误 只有当我将其设置为非 constexpr 并在类之外对其进行初始化时 它似乎才起作用 Workin
  • 如何使用其他 webcontroller odoo 9.0 更改 odoo 的默认页面

    我创建了一个具有特定功能的新 Web 控制器 我希望将此 Web 控制器作为odoo 9 0 我试过把 http route type http auth public website True in main py我的自定义 webcon
  • 链接 LLVM 导致 gcov 失败

    Passing coverage到 gcc 同时链接 LLVM 会导致undefined reference to gcov exit 来自链接器的错误 我已经建立了一个新项目来尝试解决这个问题 你可以查看github上的源码 and 检查
  • Vue.Js - Firebase 函数不能在组件上使用

    我正在使用 Vue Resource 将数据从我的网络应用程序发布到 firebase 但是后来 我发现我需要使用 firebase 集成来上传 firebase 存储中的图像 所以我将它集成到我的 src main js 中 import
  • 在 Sublime Text 2 中显示所有可能的 CSS 值的包?

    通过基本的 Sublime Text 2 构建 我获得了 CSS 值自动完成功能only当我输入值的第一个字母时 如下图所示 不过 我一直在观看 Tuts HTML CSS 网络教程 这是一个示例视频 他的 Sublime Text 构建显
  • 将 MongoDB 查询转换为 Spring MongoDB 语法

    您好 我无法将以下 mongoDB 查询转换为 spring 查询 我尝试了多种方法 但没有得到结果 db getCollection FarmerCropDataLog aggregate match cropData crop RICE
  • JSDoc 中对象中任意键的值的文档结构

    我有一个函数factory function factory events for const key in events const before after events key 论点在哪里events通常是 only before a
  • 从 Java 将多个 PDF 作为单个打印作业打印(物理打印)

    我想在一个打印作业中从java 使用java打印服务 打印多个pdf 我想将多个 pdf 文件作为单个作业发送到打印机 这样 我的 批量 中的所有文档都会一起打印 并且当我从打印机中取出它们时 不会与其他人的打印作业交错 一个批次可能包含数
  • 如何使用 JavaFX TableView 显示基于列的数据集

    我正在尝试从 Swing 切换到 JavaFX 但 TableView 出现问题 我在内存中有一个基于列的通用数据结构 例如List