只是想知道我们可以将JTable的单元格检索为JComponent,并且我们可以计算jtable的每个单元格的区域,以便我可以绑定到用户点击该特定区域。
答案 0 :(得分:3)
首先尝试JTable教程。
JTable使用表格单元格渲染器,它提供一个JComponent来渲染表格单元格。 存在效率优化,因为通常(使用DefaultTableCellRenderer)重用相同的JComponent,并使其适应TableModel单元格的内容。
(除了渲染器外,还有表格单元格编辑器。)
在您的情况下,您只需覆盖DefaultTableCellRenderer
并执行jtable.setRenderer
。
答案 1 :(得分:3)
我们可以将jtable的单元格检索为JComponent吗?
简而言之,没有。要绘制JTable,Swing使用渲染器的概念。这意味着我们不再使用每个单元格的实时组件,而是重复使用相同的组件来绘制JTable的整列或多列。这意味着JTable将使用适当的参数调用渲染器,将其大小和位置设置为相应的单元格,调用paint方法,然后进一步移动组件,直到绘制整个表格。这意味着JTable中的每个单元都没有子组件。详细了解所有这些here。
现在,如果要绑定鼠标侦听器,可以直接在JTable上执行此操作,并且可以使用getCellRect
查看单击是否位于特定单元格内,或使用columnAtPoint和rowAtPoint找出点击了哪个单元格。