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