我们可以将JTable的单元格检索为JComponent吗?

时间:2012-09-17 09:12:55

标签: java swing graphics jtable tablecellrenderer

只是想知道我们可以将JTable的单元格检索为JComponent,并且我们可以计算jtable的每个单元格的区域,以便我可以绑定到用户点击该特定区域。

2 个答案:

答案 0 :(得分:3)

首先尝试JTable教程。

JTable使用表格单元格渲染器,它提供一个JComponent来渲染表格单元格。 存在效率优化,因为通常(使用DefaultTableCellRenderer)重用相同的JComponent,并使其适应TableModel单元格的内容。

(除了渲染器外,还有表格单元格编辑器。)

在您的情况下,您只需覆盖DefaultTableCellRenderer并执行jtable.setRenderer

答案 1 :(得分:3)

我们可以将jtable的单元格检索为JComponent吗?

简而言之,没有。要绘制JTable,Swing使用渲染器的概念。这意味着我们不再使用每个单元格的实时组件,而是重复使用相同的组件来绘制JTable的整列或多列。这意味着JTable将使用适当的参数调用渲染器,将其大小和位置设置为相应的单元格,调用paint方法,然后进一步移动组件,直到绘制整个表格。这意味着JTable中的每个单元都没有子组件。详细了解所有这些here

现在,如果要绑定鼠标侦听器,可以直接在JTable上执行此操作,并且可以使用getCellRect查看单击是否位于特定单元格内,或使用columnAtPointrowAtPoint找出点击了哪个单元格。