对于Java,解决方案在这里: How to add button in a row of JTable in Swing java(我需要将按钮放在给定的列中,而不是一行)。
将其翻译成Scala时,我遇到了为表格列设置新渲染器的问题。列没有getter方法,列模型没有getter方法。至少我没有看到任何:Table API。
我需要这样的东西:
table.getColumn(...
或
table.getColumnModel(...
注入我的ButtonRenderer。
如何使用包含Swing表的按钮设置列?
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());
Scala Swing可能有问题,我将GUI部分重写为Java Swing(在Scala中),并将按钮插入到表中。