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

当JTable被重新排序时,如何跟踪列索引?

当JTable被重新排序时,可以通过以下方式跟踪列索引:

  1. 使用TableColumnModelListener接口:实现该接口,并注册为JTable的TableColumnModel的监听器。当列的顺序发生变化时,会触发columnMoved()方法,该方法可以获取到列的索引信息。

示例代码:

代码语言:txt
复制
table.getColumnModel().addColumnModelListener(new TableColumnModelListener() {
    @Override
    public void columnMoved(TableColumnModelEvent e) {
        int fromIndex = e.getFromIndex();
        int toIndex = e.getToIndex();
        // 处理列索引的变化
    }
    // 其他方法省略
});
  1. 使用TableColumnModel的getColumnIndex()方法:在JTable重新排序后,可以通过该方法获取到指定列的索引。

示例代码:

代码语言:txt
复制
int columnIndex = table.getColumnModel().getColumnIndex("列名");
  1. 使用TableColumnModel的getColumn()方法:在JTable重新排序后,可以通过该方法获取到指定索引的列对象。

示例代码:

代码语言:txt
复制
TableColumn column = table.getColumnModel().getColumn(columnIndex);

通过以上方法,可以在JTable被重新排序时跟踪列索引,并进行相应的处理。

关于JTable的更多信息和使用方法,可以参考腾讯云的JTable产品文档: JTable产品介绍

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

相关·内容

Java Swing JTable

使用情况的完整示例,涵盖了如何使用JTable提供从数据库获取的数据的可编辑视图以及如何修改显示中的列。...重要的是要记住,由各种JTable方法返回的列和行索引是根据JTable(视图)而言的,不一定与模型使用的索引相同。...默认情况下,列可能会在JTable中重新排列,以使视图的列以与模型中的列不同的顺序出现。这一点根本不影响模型的实现:对列进行重新排序时,JTable在内部维护列的新顺序并在查询模型之前转换其列索引。...(int rowHeight) // 设置指定行的行高 void setRowHeight(int row, int rowHeight) /** 设置当手动改变某列列宽时,其他列的列宽自动调整模式,...注意:该列是按表视图的显示顺序指定的,而不是按TableModel的列顺序指定的。这是一个重要的区别,因为当用户重新排列表中的列时,视图中给定索引处的列将发生变化。

5.1K10

java swing 添加 jcheckbox复选框

比如上面的例子JTable(TableModel dm),这是JTable的构造方法,需要的是一个TableModel接口类型的参数(这里只是举例,实际运用比较复杂),我们可以使用如下写法:JTable...其次是表格样式,表格将数据和如何显示数据(比如列数量、列名称、是否可编辑)保存在其数据模版中,该模版实现自接口TableModel。   最后,表格(每一个单元格)可以设置渲染效果。.../* (non-Javadoc) 47 47 * 重写方法,判断表单元格是否可编辑 48 48 * 可以通过row和column索引判断某一个单元格是否可编辑...// 方法二:先设置列编辑器,然后设置单元格渲染 87 85 // 设置列编辑器 88 86 // 在以复选框为对象设置列编辑器时,必须保证该列能够被编辑...109 112 110 // 在多选是需要按住Ctrl键或者鼠标按住拖过连续的需要选中的行,应该给用户说明 113 111 // 第一种方法是被推荐的

3.3K00
  • 高级Swing 组件

    请运行示例代码中的程序,双击列标题中的一个。你将能够看到表格的各个行是如何被从新安排的,从而可以列的项目进行排序。 但是,我们并没有对数据表格模型中的各个行进行物理上的从新安排。...相反,我们将使用一个过滤器模型,使数组带有从新排列的行索引。 该过滤器模型存放了一个对实际表格模型的引用。当JTable需要查看某个值时,过滤器模型便计算实际的行索引,并且从模型中获取该值。...publicString getColumnName(int c) { return model.getColumnName(c); } 下图显示了过滤器是如何被安排在JTable对象与实际的表格模型之间的...当检测到一个双击操作时,必须确定鼠标点击操作落在表格的那一个列上。然后,必须将表格列转换成表格模型的列,如果用户将表格列随意移动的话,那么表格与表格模型的列是不同的。...当表格想要绘制一个单元格时,该方法便被调用。

    6910

    JTable怎样控制某一列、某一单元格允许或不允许被编辑

    网上有很多关于怎样实现JTable不能被编辑的文章,因为如果不设置的话,双击单元格就会将单元格的内容读入一个默认的编辑器里,很多时候我们并不希望这样的事情发生,所以必须do something来阻止它。...false; } }; 没什么神秘的,就是重写DefaultTableModel的方法isCellEditable方法,但更多的情况下,我们是需要指定表格中某一列或若干列允许被编辑...,如商品列表中的数量,价格等等,这样又如何去实现呢?    ...其实仔细观察一下,这个isCellEditable方法会传两个参数进来,明眼人一看就知道,这分别是单元格的行和列索引,所以,根据这个row和column来控制返回true或false,我们的愿望就能实现了...下面是几个例子,要学会举一反三噢: 1、只允许表格的第三列被编辑 public boolean isCellEditable(int row,int column){ if(column ==

    1.2K10

    MySQL高级--性能优化之索引使用

    3.6 关联表如何加索引 单表: 可以任意加索引,不用区分表。 两张表关联: 左关联索引加在右表,右关联加在左表。...只有模糊查询的占位符放到右边的时候索引才会生效。 当给定的需求就是模糊查询左右都需要占位符(like '%张三%')的时候该如何让索引生效?????...此时生效的索引:c1,c2,c3,c4 例题3:排序查询 排序时索引也用到了,只不过此时该索引不是用来查询,而是用来排序,explain没有展示出来 此时生效的索引:c1,c2 c1,c2索引都用到了...双路排序:MySQL4.1之前使用的是双路排序,字面意思就是两次扫描磁盘,最终得到数据,读取行指针和order by列,对他们进行排序,然后扫描已经排序好的列表,按照列表中的值重新从列表中读取对应的数据输出...c1索引被使用了 c1,c2,c3都使用到了,因为不是使用通配符开头的。

    69360

    python对100G以上的数据进行排序,都有什么好的方法呢

    索引不被视为一列,您通常只有一个行索引。行索引可以被认为是从零开始的行号。...查看突出显示的索引,您可以看到行的顺序不同。这是因为quicksort不是稳定的排序算法,而是mergesort。 注意:在 Pandas 中,kind当您对多个列或标签进行排序时会被忽略。...按升序按索引排序 您可以根据行索引对 DataFrame 进行排序.sort_index()。像在前面的示例中一样按列值排序会重新排序 DataFrame 中的行,因此索引变得杂乱无章。...探索高级索引排序概念 在数据分析中有很多情况您希望对分层索引进行排序。你已经看到了如何使用make和model在MultiIndex。对于此数据集,您还可以将该id列用作索引。...当您对缺失数据的列进行排序时,您的 DataFrame 如下所示: >>> >>> df.sort_values(by="mpgData_") city08 cylinders fuelType

    10K30

    MySQL怎样处理排序⭐️如何优化需要排序的查询?

    当使用的查询语句需要进行排序时有两种处理情况:当前记录本来就是有序的,不需要进行排序当前记录未保持顺序,需要排序使用索引保证有序对于第一种情况,常常是使用二级索引中索引列的有序来保证结果集有序,从而不需要进行排序对于表...a2索引时,a2列的记录本身就是有序的,因此不需要再使用其他开销进行排序当然,优化器也有可能不使用a2索引(当优化器认为使用a2回表开销太大时会使用全表扫描)当优化器使用的索引上a2无序时,则会通过其他手段对结果进行排序...order by、group by等需要排序的关键字时,最好建立合适的索引如果数据量小可以在sort buffer中排序,如果数据量太大还需要与磁盘交互总结当查询语句需要排序时会分为不用排序和需要排序两种情况当使用的索引有序时则不用再进行排序...,通过索引来保证有序当使用的索引无序时则会使用sort_buffer进行排序,当查询字段的长度未超过限制时,sort_buffer中每条记录会存储需要查询的列如果超过限制,则sort_buffer只会存储需要排序的列和主键值...,避免使用磁盘页辅助排序当无法使用索引时可以调整sort buffer 或 max_length_for_sort_data(谨慎)最后(不要白嫖,一键三连求求拉~)本篇文章被收入专栏 由点到线,由线到面

    14321

    Solr搜索问题笔记(一)

    第二种是面向对象的形式将一份索引映射成一个Bean对象封装。...当使用第二种时,需要注意一个问题,如果一个对象里,有基本类型int,float,long,double等,那么建议使用其包装类型,why?...因为基本类型,在类实例化时候,是会初始化赋值的,这样一来,无论你添加的某条数据(Document)里,有没有这个field,那么它都会生成一个值为初始化的field,这样以来,在排序时候就可能会出现问题...引用类型的字段,如果为null,则此条记录不会生成filed (2):在排序时,对于那些没有值的field,我们应该如何控制其排序方式?...):如何在linux终端,执行curl命令清空某个core索引: Java代码 curl http://localhost:8983/solr/corename/update?

    88840

    MySQL高级--性能优化查询截取分析

    4.3 ORDER BY 排序优化 4.3.1 ORDER BY 排序示例 排序时索引也用到了,只不过此时该索引不是用来查询,而是用来排序,explain没有展示出来 此时生效的索引:c1,c2 c1...,c2索引都用到了,直接使用c3进行排序,此时和c4没有什么关系 此时生效的索引:c1,c2 c1,c2索引都用到了,此时直接使用c4排序,导致c3出现断层,MySQL优化器不能直接进行排序,在内部进行了一次...4.3.4 如果不在索引列上,filesort有两种算法 单路排序:从磁盘读取查询需要的所有列,按照order by列在buffer对他们进行排序,然后扫描排序后的列表进行输出,它的效率更快一些,避免了第二次读取数据...双路排序:MySQL4.1之前使用的是双路排序,字面意思就是两次扫描磁盘,最终得到数据,读取行指针和order by列,对他们进行排序,然后扫描已经排序好的列表,按照列表中的值重新从列表中读取对应的数据输出...当无法使用索引列,增大 max_length_for_sort_data 参数的设置 + 增大 sort_buffer_size 参数的设置。

    1K50

    bigtable是什么_BigTable

    每一个SSTable都包含了连续的几个块(默认情况下,每个块64KB,但是大小是可以配置的)块索引(存放在SSTable的最后)是用来定位块的;当SStable打开时索引就被加载进内存。...这样查询只需要一次磁盘寻道:首先通过对内存索引进行二分查找找到对应的块。根据实际情况,一个SSTable可以完全被映射到内存,从而在执行查找和扫描是无需访问硬盘。...Bigtable使用Chubby跟踪这些tablet服务器,当一个tablet服务器启动时,在一个特定的Chubby目录下,对一个唯一名字的文件创建一个排它锁。...当tablet失去排它锁时,就会停止对其上的tablets提供服务。例如:网络中断可能导致服务器失去和Chubby的会话。tablet服务尝试重新获取一文件的排它锁只要它的文件依旧存在。...当文件被写入时,GFS尝试把数据的副本放在写者的机器上。当读取GFS文件时,读取的数据来源于最近可用的副本中。

    1.2K40

    Python 密码破解指南:5~9

    当您导入一个 Python 程序时,在程序执行之前,__name__变量被设置为文件名的 before 部分。py。...这就是函数的代码可以被其他程序重用的方式。 注 了解一个程序如何工作的一个有用的方法是在它运行时一步一步地跟踪它的执行。您可以使用在线程序跟踪工具查看 Hello 函数和换位密码加密程序的踪迹。...当它们完成后,这些方框看起来将像图 8-1 中的(一个/代表一个空格)。 你收到密文的朋友注意到,当他们阅读这些列中的文本时,原始的明文被恢复:“常识并不那么普遍。”...我们将创建两个名为column和row的变量来跟踪message中下一个字符应该去的列和行;这些变量应该从第一列和第一行的0开始。...引用传递 引用对于理解参数如何传递给函数特别重要。当一个函数被调用时,参数的值被复制到形参变量中。对于列表,这意味着引用的副本用于参数。

    2.3K50

    MySQL高级

    ,降低操作速度 2.3、索引的分类 单值索引:即一个索引只包含单个列,一个表可以有多个单值索引 唯一索引:索引列的值必须唯一,但允许多个空值 复合索引:即一个索引包含多个列 2. 4、索引的语法 创建索引...长度越短越好 3. 6、explain之rows 扫描行的数量 3. 7、explain之ref 显示索引的那一列被使用了,如果可能的话,是一个常量。...哪些列或常量被用于查找索引列上的值 3. 8、explain之extra 1)using filesort:mysql会对数据使用一个外部的索引排序,而不是根据表内的顺序进行读取,称为文件排序...2)using temporary:使用临时表保存中间结果,MySQL在对查询结果排序时使用临时表。...,不必读取数据行 4、索引的使用 4.1、全值匹配 对索引所有的列都指定具体的值 4.2、最左前缀法则 查询从复合索引的最左列开始,并且不跳过索引的列 1)索引生效(与顺序无关) 1)索引失效(

    9810

    Pandas知识点-排序操作

    如果要按多重索引内的多个行索引排序,可以给level传入一个列表,这样会先按列表中的第一个行索引排序,当第一个行索引有相等的值时,再按第二个行索引进行排序,以此类推。...按指定列进行排序 在按列排序前,请特别注意:按行索引排序和按列排序都是对行进行排序,按列索引排序和按行排序都是对列进行排序。避免被绕晕了。 ?...na_position参数只支持按单列排序时使用,在按多重索引或按多列排序时无效。...按多个列进行排序 ? 给by参数传入多个列索引值时(用列表的方式),即可以对多个列进行排序。当第一列中有相等的数据时,依次按后面的列进行排序。ascending参数的用法与按多重索引排序一样。...kind参数用于设置使用的排序算法,在按多重索引排序和按多个列排序时无效。na_position参数用于设置空值排在最后面或最前面,在按多重索引排序和按多个列排序时无效。

    1.9K30

    面试专题-基础篇

    T,无需比较,中间索引左边去找,M - 1 设置为右边界,重新查找 ③ A[M] 索引右边去找, M + 1 设置为左边界,重新查找 当 L....reversed()); System.out.println(Arrays.toString(cards)); 都是先按照花色排序(♠♥♣♦),再按照数字排序(AKQJ…) 不稳定排序算法按数字排序时...,他俩的位置变了 稳定排序算法按数字排序时,会保留原本同值的花色顺序,如下所示 ♠2 与 ♥2 的相对位置不变 [[♠7], [♠2], [♠4], [♠5], [♥2], [♥5]] [[♠7], [...– 1) 得到索引 数组容量为何是 2 的 n 次幂 计算索引时效率更高:如果是 2 的 n 次幂可以使用位与运算代替取模 扩容时重新计算索引效率更高: hash & oldCap == 0 的元素留在原来位置...(n-2)}+ … S_i ∗ 31^{(n-1-i)}+ …S_{(n-1)}∗31^0 31 代入公式有较好的散列特性,并且 31 * h 可以被优化为 即 32 ∗h -h 即 2^5 ∗h

    59430

    20道BAT面试官最喜欢问的JVM+MySQL面试题(含答案解析)

    要求数据库表中的每 个实例或行必须可以被惟一地区分。通常需要为表加上一个列,以存储 各个实例的惟一标识。这个惟一属性列被称为主关键字或主键。 3. 满足第三范式(3NF)必须先满足第二范式(2NF)。...UNION ALL 要比 UNION 快很多,所以,如果可以确认合并的两个结 果集中不包含重复数据且不需要排序时的话,那么就使用 UNION ALL。...对排序的处理:Union 将会按照字段的顺序进行排 序;UNION ALL 只是简单的将两个结果合并后就返回。 3. 请简述常用的索引有哪些种类? 1. 普通索引: 即针对数据库表创建索引 2....唯一索引: 与普通索引类似,不同的就是:MySQL 数据库索引列的值 必须唯一,但允许有空值 3. 主键索引: 它是一种特殊的唯一索引,不允许有空值。一般是在建表的 时候同时创建主键索引 4....主服务器将 更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志 可以记录发送到从服务器的更新。 当一个从服务器连接主服务器时,它通知主 服务器在日志中读取的最后一次成功更新的位置。

    72800

    揭秘LOL背后的IT基础架构丨开发者“打野”工具能做什么?

    image.png 当你登录时,会看到一排排的小部件,表示我们已在整个集群中全局应用的网络规则。其中的每一个都由JSON配置blob作为支撑。让我们仔细看一下前面提到的Summonercore应用。...在这里,你也可以看到“位置”列,该列引用了我们命名作用域的部署部分。列中的服务名称是应用程序作用域。 跟踪构建 到目前为止,我们已经研究了如何管理生产环境中运行的东西。...当软件从代码转换为服务时,这使他们可以跟踪这个软件。 image.png 这是我们第一次公开讨论这个工具,但是使用它已经有大约三、四年的时间了,甚至比我们转向微服务还要早。...当团队决定构建一个服务时,可以生成微服务构建管道。团队还可以创建自己的构建管道,并使用此API进行跟踪。...当你构建数百个服务和应用程序时,这样的数据聚合器确实可以帮助你理解流程,并提供一些版本管理控制。

    67920

    【漫画】七种最常见的排序算法(动图版)

    如果有n个数据,那么需要的比较次数,所以当数据量很大时,冒泡算法的效率并不高。 当输入的数据是反序时,花的时间最长,当输入的数据是正序时,时间最短。 步骤 从前往后依次比较相邻的元素。...(数列遍历一遍后,最大数被移动到末尾)。 重复步骤1(已确定位置的数据不需要再参与排序)。 完成排序。 动画演示 ? python代码实现如下: ?...四、快速排序 快速排序,英文称为Quicksort,又称划分交换排序partition-exchange sort简称快排。 快速排序使用分治策略来把一个序列分为两个子序列。...递归的最底部情形,是数列的大小是零或一,也就是永远都已经被排序好了。虽然一直递归下去,但是这个算法总会结束,因为在每次的迭代(iteration)中,它至少会把一个元素摆到它最后的位置去。...步骤 将元素分为n列,并对每列进行插入排序。 将n列元素按行进行合并。 重复步骤1-2,其中元素的列数为上次的一半。 动画演示 ? ? python代码实现如下: ?

    2.8K32
    领券