0

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にバインドしたくないため、これを自分のケースに転送する方法がわかりません。

4

1 に答える 1

1

多重継承が鍵です:

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