0

我正在尝试将组合框作为编辑器添加到 jython 中的表列中。由于我想根据我试图实现的行来选择值AbstractCellEditor来设置自定义编辑器,所以我的代码大约是:

from javax.swing.table import TableCellEditor
from javax.swing import AbstractCellEditor

class customCombo(TableCellEditor):

    def __init__(self):
        self._box = JComboBox( editable = False );
        #button.setActionCommand(EDIT);
        #self._box.actionListener = self.actionPerformed



    def actionPerformed(self, event):
        print "well we should do something"



    def getCellEditorValue(self):
        return self._box.selectedItem



    def getTableCellEditorComponent(self, table, value, isSelected, row, col):
        #TODO: customize the dropdown
        self._box.removeAll()
        self._box.add("head") #should this be addItem
        return self._box

 class table(object):
       def __init__(self):
           ...
           self._table.columnModel.getColumn(8).cellEditor = customCombo()

由于我是摇摆新手,因此我尝试从http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#editor翻译示例。但是,如果我实现它,它只会“起作用”(如运行但没有按预期运行,我永远看不到组合框)TableCellEditor,但根据示例:

AbstractCellEditor 类是一个很好的超类。它实现了 TableCellEditor 的超级接口 CellEditor,省去了实现单元格编辑器所需的事件触发代码的麻烦。

因此,我想实现AbstractCellEditor,但是这样做会产生:

类型错误:无法将 org.python.proxies.cross.gui.ipTable$customCombo$2@3da850 转换为 javax.swing.table.TableCellEditor

作为一个有益的问题:我如何使生产线self._box.actionListener = self.actionPerformed工作?我发现使用 Jython & Swing 进行事件处理,但是我不确定如何将其转移到我的案例中,特别是因为我不想将父(表)绑定到 customCombo

4

1 回答 1

1

多重继承是关键:

class customCombo(TableCellEditor, AbstractCellEditor):
于 2012-05-31T08:44:39.573 回答