Jython swing超级调用类“扩展”JTextField

时间:2012-06-01 06:05:09

标签: swing jython

我正在尝试制作类似于the panel here的自定义TextField。但是,如果我尝试为某些方法调用super,它将进入无限递归,从而导致递归限制(对于stackoverflow没有更合适的问题;)),方法例如是paintadd(那些我尝试了两个,我猜这是继承的一切。

以下是重要的代码摘录:

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()

1 个答案:

答案 0 :(得分:1)

如果该方法在各自的java类中受到保护,则必须使用以下语法(诚实地讨厌这种方法)

self.super__

例如:

from javax.swing import JPanel

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

Source

要调用任何其他超类方法,请使用以下语法:

SuperClassName.method(self, *args)

使用new-style classes

super(panel, self).method(*args)