jtable获取列标题组件

Posted

技术标签:

【中文标题】jtable获取列标题组件【英文标题】:Jtable get column header component 【发布时间】:2014-05-16 19:50:29 【问题描述】:

我想知道你们中是否有人知道一种让实际 JComponent 实例在现有 JTable 中呈现列标题的好方法。

在谷歌上找不到任何有用的东西,所以我来到了这里。 :)

我已经知道有一个 TableCellRenderer 接口可以传递我想要获取的组件,但是不能保证它每次都会返回相同的实例,所以它对我来说或多或少没用。

编辑:

目标是有可能动态获取表示列标题的组件的位置和大小。

列标题组件是指以下对象的实例:

我真的无法发布任何有用的代码示例,抱歉。 实际上,任何 JTable 示例都可以,因为问题涉及标准 Java JTable 功能。

【问题讨论】:

您的实际问题是什么?你想实现什么?发帖MCVE寻求帮助。 我们的目标是有可能动态地获取表示列标题的组件的位置和大小。 好的,但是为什么呢?你想/需要用这个组件做什么? 我需要这些值(位置、大小)来创建模仿这两个属性的组件。这些组件没有大小或位置,而是将任何调用委托给它们正在模仿的组件。我需要在我们的 GUI 上添加一些屏蔽功能。 这是put a control in the JTableHeader of a JTable的一种方式。 【参考方案1】:
Rectangle r = table.getTableHeader().getHeaderRect(...);

【讨论】:

【参考方案2】:

table.getColumnModel().getColumn(i).getHeaderRenderer() 是您要找的吗?

【讨论】:

不幸的是,getHeaderRenderer() 返回一个实现 TableCellRenderer 接口的对象,它本身不是一个组件实例(至少不一定)。同样根据 Javadoc,如果使用默认标题渲染器,此方法将返回 null。 确实,在这种情况下使用table.getHeader().getDefaultRenderer()。如果您想使用组件中的某些属性,那么您可能会发现table.getTableHeader().getAccessibleContext().getAccessibleChild(i) 很有用。但我认为如果使用非默认渲染器,JTable 不会在每个渲染器上创建一个新组件。 似乎没有干净的方法来获取这些属性。我将不得不忍受 :) 无论如何感谢你们所有人的努力。

以上是关于jtable获取列标题组件的主要内容,如果未能解决你的问题,请参考以下文章

sql查询提供的jtable列总和

如何从 jtable 中的复选框中获取选中的值?

Java 鼠标获取 JTable 位置的移动

是遍历jTable并将列值传递给java中的sql查询

JAVA中从Mysql取数据到JTable

解释数据字符串并将其插入到 Java 中正确列位置的 JTable 中