如何使用TableModel在JTable中呈现组件?

时间:2018-11-06 12:27:56

标签: java swing jtable jcomponent

我已经成功地使用JTable显示了AbstractTableModel,但是我想在返回{{1}的getValueAt方法中为最后一列的每一行添加删除按钮}我无法返回ObjectJButton或任何可点击的JLabel。我尝试过,但只得到对象描述JComponent

是否有另一种解决方案可以在不使用toString方法的情况下在JComponent中呈现JTable

2 个答案:

答案 0 :(得分:3)

  

是否存在另一种无需使用TableModel方法即可在JTable中呈现JComponent的解决方案?

TableModel用于保存模型数据。

JTable实现每一列的数据视图。渲染器只是数据的图片。您可以轻松地将数据呈现为按钮状,但是呈现器不响应任何事件。

JTable确实支持编辑器,这就是您与实际组件进行交互的方式。当您编辑普通单元格时,会在单元格位置放置一个JTextField,以便您可以在单元格中键入数据,然后将数据保存到模型中。

因此,如果要单击按钮,则需要使用按钮作为编辑器。

签出Table Column Button来使用JButton作为渲染器和编辑器的类。然后,您为该类提供了一个Action,当单击按钮时将要调用它。

阅读Concepts: Renderers and Editor上Swing教程中的部分,以获取更多信息。关于Using Other Editors,还有一节。

答案 1 :(得分:1)

一种方法:手动添加列上的TableColumn.setCellEditor(jbutton_instance)。