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 theJTableHeader
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获取列标题组件的主要内容,如果未能解决你的问题,请参考以下文章