1

对于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 中)并将按钮插入到表中。

4

0 回答 0