如何以最短的方式对JTable进行排序?

2024-01-03

我正在搜索排序JTable我参考了很多文章,但无法找到对表格进行排序的最简单方法。我也知道TableRowSorter可能会有所帮助,但不知道如何。刚接触JTable,我在这里创建一个新问题。

我的表结构是这样的

| People  | Place |   Organisation    | Event    | Mentions |
_____________________________________________________________
| Ramanuj | India | Tata Consultancy  | Party'14 |  500000  |
| Prankster | USA | Microsoft Pvt Ltd | Party'14 |  900000  |

我想要的是根据第四列(“提及”)对表格进行降序排序。如果计数(提及)相同,则应按第一列(“人员”)升序排序

CSVReader reader = new CSVReader(new FileReader(file)); 

List<String[]> myEntries = reader.readAll();
String[][] rowData = myEntries.toArray(new String[0][]);

String[] columnNames = { "People", "Place", "Organisation", "Event", "Mentions" };

DefaultTableModel tableModel = new DefaultTableModel(rowData, columnNames);

As per 如何使用表格:排序和过滤 http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#sorting

JTable table = new JTable(tableModel);
TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(table.getModel());
table.setRowSorter(sorter);

List<RowSorter.SortKey> sortKeys = new ArrayList<>(25);
sortKeys.add(new RowSorter.SortKey(4, SortOrder.ASCENDING));
sortKeys.add(new RowSorter.SortKey(0, SortOrder.ASCENDING));
sorter.setSortKeys(sortKeys);

Updated

你确定它会排序吗?

...Yes

import java.awt.EventQueue;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.RowSorter;
import javax.swing.SortOrder;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;

public class Test {

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

    public Test() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                    ex.printStackTrace();
                }

                DefaultTableModel model = new DefaultTableModel(new String[]{"People", "Place", "Organisation", "Event", "Mentions"}, 0);
                model.addRow(new Object[]{"Prankster", "USA", "Microsoft Pvt Ltd", "Party'14", 900000});
                model.addRow(new Object[]{"Ramanuj", "India", "Tata Consultancy", "Party'14", 500000});
                model.addRow(new Object[]{"Banana", "India", "Tata Consultancy", "Party'14", 500000});

                JTable table = new JTable(model);
                TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(table.getModel());
                table.setRowSorter(sorter);

                List<RowSorter.SortKey> sortKeys = new ArrayList<>(25);
                sortKeys.add(new RowSorter.SortKey(4, SortOrder.ASCENDING));
                sortKeys.add(new RowSorter.SortKey(0, SortOrder.ASCENDING));
                sorter.setSortKeys(sortKeys);

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.add(new JScrollPane(table));
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

}

Updated

您可以直接从视图中提取数据...

 for (int row = 0; row < table.getRowCount(); row++) {
     String people = table.getValueAt(row, 0).toString();
     String place = table.getValueAt(row, 1).toString();
     String organisation = table.getValueAt(row, 2).toString();
     String event = table.getValueAt(row, 3).toString();
     int mentions = (int)table.getValueAt(row, 4);
     //...
 }

这将为您提供“查看”(或排序)顺序的数据......

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

如何以最短的方式对JTable进行排序? 的相关文章

  • Spring Security 自定义过滤器

    我想自定义 Spring security 3 0 5 并将登录 URL 更改为 login 而不是 j spring security check 我需要做的是允许登录 目录并保护 admin report html 页面 首先 我使用教
  • 如何在 Firebase 远程配置中从 JSON 获取值

    我是 Android 应用开发和 Firebase 的新手 我想知道如何获取存储在 Firebase 远程配置中的 JSONArray 文件中的值 String 和 Int 我使用 Firebase Remote Config 的最终目标是
  • JVisualVM/JConsole 中的 System.gc() 与 GC 按钮

    我目前正在测试处理 XML 模式的概念验证原型 并围绕一个非常消耗内存的树自动机外部库 我已经获得了源代码 构建 我想绘制 真实峰值 堆 随着模式大小的增加 不同运行的内存消耗 使用的指标符合我的目的并且不会影响问题 或者至少是它的合理近似
  • 打印星号的 ASCII 菱形

    我的程序打印出这样的钻石 但只有当参数或菱形的每一面为4 例如如果我输入6 底部三角形的间距是错误的 我一直在试图找出答案 当参数改变时 底部的三角形不会改变 只有顶部的三角形会改变 它只适用于输入4 public static void
  • GWT - 如何组织项目以拥有多个网页以及它们之间的导航

    我是 GET 的新手 顺便说一句 它给我留下了深刻的印象 并且发现它对于像我这样熟悉 C NET 桌面技术并愿意编写 Web 应用程序的人来说非常有吸引力 我根据 GWT Eclipse 向导生成的示例启动了自己的项目 该项目生成带有面板的
  • Spring RestTemplate 使用 cookie 遵循重定向

    最近我遇到了一个问题 我需要做一个GET请求远程服务 我假设使用一个简单的 servlet 并且 RestTemplate 返回Too many redirects 经过一番调查 似乎对指定远程服务发出的第一个请求实际上只是一个 302 重
  • 在 Wildfly 中与 war 部署共享 util jar 文件

    假设我有一个名为 util jar 的 jar 文件 该 jar 文件主要包含 JPA 实体和一些 util 类 无 EJB 如何使这个 jar 可用于 Wildfly 中部署的所有 war 无需将 jar 放置在 war 的 WEB IN
  • Integer.parseInt("0x1F60A") 以 NumberformatException 结束

    我尝试从数据库中获取长字符串内的表情符号代码 格式如下 0x1F60A 所以我可以访问代码 但它将是String 起初 我尝试通过执行以下操作来转换变量tv setText beforeEmo getEmijoByUnicode int e
  • 大数据使用什么数据结构

    我有一个包含一百万行的 Excel 工作表 每行有 100 列 每行代表一个具有 100 个属性的类的实例 列值是这些属性的值 哪种数据结构最适合在这里使用来存储数百万个数据实例 Thanks 这实际上取决于您需要如何访问这些数据以及您想要
  • 使用 JUnit 时,有没有办法验证测试方法中是否调用了 try/catch 指令的 Catch 部分?

    例如 如果我想测试以下课程 public class SomeClass public void someMethod try Some code where comething could go wrong catch Exception
  • 是否可以通过编程方式查找 logback 日志文件?

    自动附加日志文件以支持电子邮件会很有用 我可以以编程方式设置路径 如以编程方式设置 Logback Appender 路径 https stackoverflow com questions 3803184 setting logback
  • 在另一个模块中使用自定义 gradle 插件模块

    我正在开发一个自定义插件 我希望能够在稍后阶段将其部署到存储库 因此我为其创建了一个独立的模块 在对其进行任何正式的 TDD 之前 我想手动进行某些探索性测试 因此 我创建了一个使用给定插件的演示模块 到目前为止 我发现执行此操作的唯一方法
  • 了解joda时间PeriodFormatter

    我以为我明白了 但显然我不明白 你能帮我通过这些单元测试吗 Test public void second assertEquals 00 00 01 OurDateTimeFormatter format 1000 Test public
  • 流中的非终结符 forEach() ?

    有时 在处理 Java Stream 时 我发现自己需要一个非终端 forEach 来触发副作用但不终止处理 我怀疑我可以用 map item gt f item 之类的方法来做到这一点 其中方法 f 执行副作用并将项目返回到流中 但这似乎
  • QuerySyntaxException:无法找到类

    我正在使用 hql 生成 JunctionManagementListDto 类的实际 Java 对象 但我最终在控制台上出现以下异常 org hibernate hql internal ast QuerySyntaxException
  • Java Swing:需要一个高质量的带有复选框的开发 JTree

    我一直在寻找一个 Tree 实现 其中包含复选框 其中 当您选择一个节点时 树中的所有后继节点都会被自动选择 当您取消选择一个节点时 树中其所有后继节点都会自动取消选择 当已经选择了父节点 并且从其后继之一中删除了选择时 节点颜色将发生变化
  • Resteasy 可以查看 JAX-RS 方法的参数类型吗?

    我们使用 Resteasy 3 0 9 作为 JAX RS Web 服务 最近切换到 3 0 19 我们开始看到很多RESTEASY002142 Multiple resource methods match request警告 例如 我们
  • OpenCSV:将嵌套 Bean 映射到 CSV 文件

    我正在尝试将 bean 映射到 CSV 文件 但问题是我的 bean 具有其他嵌套 bean 作为属性 所发生的情况是 OpenCSV 遍历属性找到一个 bean 然后进入其中并映射该 bean 内的所有数据 如果找到另一个 bean 它就
  • 在浏览器刷新中刷新检票面板

    我正在开发一个付费角色系统 一旦用户刷新浏览器 我就需要刷新该页面中可用的统计信息 统计信息应该从数据库中获取并显示 但现在它不能正常工作 因为在页面刷新中 java代码不会被调用 而是使用以前的数据加载缓存的页面 我尝试添加以下代码来修复
  • 在java中使用多个bufferedImage

    我正在 java 小程序中制作游戏 并且正在尝试优化我的代码以减少闪烁 我已经实现了双缓冲 因此我尝试使用另一个 BufferedImage 来存储不改变的游戏背景元素的图片 这是我的代码的相关部分 public class QuizApp

随机推荐

  • Matplotlib vline 标签参数未显示

    我想用 matplotlib 的 vline 命令标记垂直线 但由于某种原因 label 参数在最终绘图上不执行任何操作 显示任何内容 有谁知道如何让标签显示出来 plt vlines x pah ymin 0 ymax 0 6 color
  • graphviz - 比较图形树

    我必须用 graphviz 来做一份工作 我需要可视化几棵树的图形表示 但无论如何我都必须比较两棵树以查看它们的差异 像这样 我有树 A 和树 B 创建它们的表示并比较它们后 我只需要查看没有共同点的节点 有人告诉我使用 EMF Compa
  • 如何在 TFS 构建定义中获取签入评论/消息?

    是否可以在 TFS 2013 构建定义 工作流程文件 中获取签入注释 消息 我看过BuildDetail但还没找到 注释是 a 的属性 a变更集 http msdn microsoft com en us library microsoft
  • 当锚标记仅触发 jQuery 操作而不重定向用户时,可以替代

    我的页面上有许多锚标记 它们仅触发同一页面上的 jQuery 操作 不会将用户重定向到另一个位置 这是锚标记的正常预期行为 我不想在我的应用程序中为每个操作都提供静态 URL 但是 我也不喜欢每次用户单击其中一个时都将其发送到页面顶部 a
  • 如何使椭圆跟随画布上的曲线

    我在尝试让椭圆正确遵循画布上的路径时遇到问题 我认为问题源于这样一个事实 我的迷你语法定义了 x 和 y 值之间的移动 但仅针对目标属性中的这些值之一 例如 Canvas Top or Canvas Left 我似乎在画布上找不到任何附加的
  • 我可以自动保存正在运行的 jupyter python 笔记本而不在浏览器选项卡中打开它吗?

    所以我有一个长期运行的Python笔记本 只要在我的浏览器选项卡中打开它 它就会每 2 分钟自动保存一次 生活很美好 即使我关闭浏览器选项卡 是否可以保持自动保存 当我关闭选项卡时 内核已经继续运行 这很棒 这有点像 屏幕 但是在 jupy
  • 模板参数上的 C++ 函数模板重载

    是否可以像这样重载函数模板 仅在使用enable if的模板参数上 template
  • Gradle:强制自定义任务始终运行(无缓存)

    我编写了一个自定义 Gradle 任务来处理路径可配置的文件系统上的一些依赖项解析 我希望这种类型的任务始终运行 我猜它们似乎只运行一次 因为输入似乎永远不会改变 我知道使用configurations resolutionStrategy
  • 没有声明为 public、private 或 protected 的变量是什么?

    如果代替 private JButton theButton 我这样定义一个字段 JButton theButton 有什么不同 Package
  • 如何通过推送通知打开 ios 应用程序?

    我可以知道如何打开 ios 应用程序 点击通知 或者当我们滑动通知图标时 如果 iPhone 被锁定 有人可以帮我吗 当点击通知时 操作系统会处理该行为 无论通知是否由第 3 方发送 如果它通过 APNS 它将打开应用程序并在内部appli
  • 如何在Linux中截图(高fps)(编程)

    首先我想说我已经阅读了很多关于这方面的内容并且学到了很多方法来做到这一点 但是我还没有能够在linux中做到这一点 我的项目是一个带有arduino的流光溢彩的项目 所以我需要截取桌面的屏幕截图并分析它的颜色 一开始 我使用Processi
  • 为 64 位 LCG 找到更多独立的种子值(MMIX(由 Knuth))

    I m using a 64 bit LCG MMIX by Knuth It generate a certain block of random numbers inside my code which use them to perf
  • Entity Framework Core - 延迟加载

    根据我的 Visual Studios 请求 我使用 Entity Framework Core 1 0 1 开始了我的最新项目 因此 编写我的数据库模型时 我总是使用 虚拟 说明符来启用列表的延迟加载 尽管在加载父表时 子列表似 乎从未加
  • 使用 golang 对每个请求实现上下文超时

    我正在尝试处理每个请求的上下文超时 我们有以下服务器结构 流程概述 去服务器 基本上 充当 反向代理 2 https en wikipedia org wiki Reverse proxy 认证服务器 检查请求身份验证 应用服务器 核心请求
  • 如何覆盖 FosUser 注册表单布局的布局。

    如何覆盖注册表的布局 目前的形式是 username email password verification 我想要覆盖此表单的布局 比如说 每行两个问题 username email additional text password ve
  • 使用 Q 打破动态的 Promise 序列

    我有几个承诺 P1 P2 Pn 我想将它们按顺序链接起来 所以 Q all 不是一个选项 并且我想在第一个错误时打破链条 每个承诺都有其自己的参数 我想拦截每个承诺错误以转储错误 如果 P1 P2 PN 是我的承诺 我不知道如何自动化该序列
  • 有什么方法可以让任务在 django 的服务器端运行吗?

    基本上 我的 django web 应用程序中有一个机器人 当给定您的社交媒体凭据时 它会管理您的社交媒体帐户之一 我能够在客户端仍在网站上时成功运行它 并且正如您所期望的那样 当客户端关闭网站时它会停止 有没有什么方法可以存储凭据 然后在
  • R 代码根据列的值插入行并将其增加 1

    我的数据中有两列 如下所示 我想根据总计列中的值插入行 例如 对于 record1 总计值为 9 因此 代码 XS1 1 应该有 9 条记录 总计从 1 到 9 为了更清楚起见 请在下面找到预期输出 我刚刚学习 R 的基础知识 您能帮我编写
  • 如何将 NSKeyedUnarchiver unarchiveObjectWithData 更新为 NSKeyedUnarchiver unarchivedObjectOfClass:[fromData:error:

    我的应用程序当前使用这个已弃用的函数 id unarchivedObject NSKeyedUnarchiver unarchiveObjectWithData codedData if unarchivedObject isKindOfC
  • 如何以最短的方式对JTable进行排序?

    我正在搜索排序JTable我参考了很多文章 但无法找到对表格进行排序的最简单方法 我也知道TableRowSorter可能会有所帮助 但不知道如何 刚接触JTable 我在这里创建一个新问题 我的表结构是这样的 People Place O