对于Java,解决方案在这里: How to add button in a row of JTable in Swing java(我需要将按钮放在给定的列中,而不是一行)。
将其翻译成 Scala 时,我遇到了为表列设置新渲染器的问题。column 没有 getter 方法,column 模型也没有 getter 方法。至少我没有看到:Table API。
我需要这样的东西:
table.getColumn(...
或者
table.getColumnModel(...
注入我的 ButtonRenderer。
如何使用 Swing 表设置带有按钮的列?
更新 1
Scala Swing Table 的peer字段是 Java JTable。我能够设置渲染器,但现在还有另一个问题——渲染器没有被使用。
渲染器
class ButtonRenderer extends javax.swing.JButton with TableCellRenderer
{
def getTableCellRendererComponent(table : javax.swing.JTable,
value : java.lang.Object,
isSelected : Boolean,
hasFocus : Boolean,
row : Int,
column : Int) : java.awt.Component =
{
setText("it works");
return this;
}
}
设置渲染器
my_table.peer.getColumnModel().getColumn(3).setCellRenderer(new ButtonRenderer());
更新 2
Scala Swing 可能有问题,我将 GUI 部分重写为 Java Swing(在 Scala 中)并将按钮插入到表中。