jythonのテーブル列にエディターとしてコンボボックスを追加しようとしています。カスタムエディタを設定するために実装しようとしている行に応じて値selectabelが必要なので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()
私はswingを初めて使用するため、 http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#editorの例を翻訳しようとしました。ただし、実装した場合、それは「機能する」だけです(実行の場合と同様ですが、希望どおりに動作しません。コンボボックスが表示されることはありません)TableCellEditor
。ただし、例によると、
AbstractCellEditorクラスは、使用するのに適したスーパークラスです。TableCellEditorのスーパーインターフェイスであるCellEditorを実装しているため、セルエディターに必要なイベント発生コードを実装する手間が省けます。
したがって、私はを実装したいと思いますがAbstractCellEditor
、そうすると次のようになります。
TypeError:org.python.proxies.cross.gui.ipTable $ customCombo $ 2@3da850をjavax.swing.table.TableCellEditorに変換できません
骨の折れる質問として:どうすればラインをself._box.actionListener = self.actionPerformed
機能させることができますか?Jython&Swingでイベント処理を見つけましたが、特に親(テーブル)をcustomComboにバインドしたくないため、これを自分のケースに転送する方法がわかりません。