2

我正在尝试制作一个类似于此处面板的自定义 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()
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 回答