我要实现以下功能,但我很困惑,如果它在Java中是可能的。如果是的话,怎么比?请帮助:

我想创建一个JTable样的表,其中的第一行的表中的包含列名和在每列即第一列的每个单元中的图标。单击该图标应导致从表(可能使用的MouseListener ??)去除该列的。

我已经发现,其描述将文本和图标(的MouseListener)到细胞的许多解决方案,其中,我可以添加按钮中的JTable细胞但没有。请看看你是否能帮助和感谢很多读。

有帮助吗?

解决方案

您可以创建扩展TableCellRenderer定制JLabel。此JLabel可以与图标(JLabel可以显示图标,向右或向左的文本)来创建。你会希望getTableCellRendererComponent测试羯羊所呈现的行是第一或没有,如果有的话,设置图标,否则没有。

有关的去除操作,可以在表中添加MouseListener,和处理mouseClicked方法时,可以看到被点击在由通过创建从rowAtPointcolumnAtPoint一个Point测试mouseEvent.getX()mouseEvent.getY()细胞。如果确定第一行与被点击的图标,你可以从列模型中删除该列。

如果通过的第一行下,你实际上意味着表头,可以创建用于JTableHeader同一渲染器,并设置MouseListener该组件上。

其他提示

好了,我不明白你的问题。

  

我想创建一个JTable样的   表所在表的第一行包含   列名称和图标

你的意思是表头,如通过显示的列名和排序方向分拣的工作方式?

如果这样,那么您使用表头定制渲染器和一个的MouseListener添加到报头,以确定被单击哪一列。你应该能够自定义默认的表标题渲染器,以你想要做什么。

还是你的意思表中的数据的第一行。如果是这样,那么你还需要使用自定义的渲染,但这个时候你的MouseListener添加到表没有表头。

在这两种情况下可以使用TableColumnModel.removeColumn()方法来从表的视图中删除的列。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top