我正在研究applet,我的类扩展了第三方api类,它具有paint(Graphics g)方法。这个类扩展了JComponent并从它的paint(Graphics g)调用super.paint(g)。现在我想从我的类中直接调用JComponent绘制方法。有没有办法做到这一点。我尝试下面但是给出错误
getParent().getParent().paint(g);
或者你可以通过以下方式理解这一点
ThirdPartyClass extends JComponent{ public void paint(Graphics g){ super.paint(g); //some work } } MyClass extends ThirdPartyClass{ public void paint(Graphics g){ getParent().getParent().paint(g); // not working giving exceptions } }
答案 0 :(得分:2)
getParent()
方法没有按照您的想法执行。它与继承和超类无关。它只返回该组件位于UI 中的awt容器。
例如,如果组件位于面板内的滚动窗格内,则在组件中调用getParent().getParent().paint(g);
将调用面板的paint方法。
答案 1 :(得分:2)
首先,getParent不会获取继承父级;它获取了 Component 父级,所以你正在尝试的并不能做你想要的,即使它确实有效。
其次,我认为是时候重新考虑你的applet设计了。如果您不想继承您继承的类的行为,那么为什么要继承它呢?你为什么不直接从Component继承?我想如果你试图让你的类成为ThirdParty的子类,然后绕过一些ThirdParty的行为而不是全部的行为,可能会产生各种各样的后果。