2

ここのパネルに似たカスタム TextField を作成しようとしています。ただし、特定のメソッドに対してスーパーを呼び出そうとすると、再帰制限につながる無限再帰に入ります(stackoverflowにこれ以上適切な質問はありませんでした;))、メソッドはたとえばpaintand add(私が試した2つ、すべて継承されていると思います)。

重要なコードの抜粋を次に示します。

class inputWithButtons(JLayeredPane):
    def __init__(self):
        self.setLayout(_textFieldWithButtons())

        self._fileField = JTextField()
        self.add(self._fileField, Integer(1))
        self.preferredSize = (0, 40) #TODO: why does minimumSize not work?



    def add(self, component, layer):  #recurses indefinitly
        super(inputWithButtons, self).add(component, layer)
        self.revalidate()
4

1 に答える 1

1

メソッドがそれぞれの Java クラスで保護されている場合は、次の構文を使用する必要があります (正直なところ、このメソッドは嫌いです)。

self.super__

元:

from javax.swing import JPanel

class panel(JPanel):
    def paintComponent(self, graphic):
        self.super__paintComponent(graphic)
        # Do something

ソース

他のスーパー クラス メソッドを呼び出すには、次の構文を使用します。

SuperClassName.method(self, *args)

新しいスタイルのクラスで:

super(panel, self).method(*args)
于 2014-12-09T10:58:22.070 に答える