我正在尝试将组合框作为编辑器添加到 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