我正在尝试制作类似于the panel here的自定义TextField。但是,如果我尝试为某些方法调用super,它将进入无限递归,从而导致递归限制(对于stackoverflow没有更合适的问题;)),方法例如是paint
和add
(那些我尝试了两个,我猜这是继承的一切。
以下是重要的代码摘录:
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()
答案 0 :(得分: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)