Java 如何绕过父类paint方法的调用

Java 如何绕过父类paint方法的调用,java,applet,Java,Applet,我正在开发applet,我的类扩展了一个第三方api类,它有自己的paint(Graphics g)方法。这个类扩展了JComponent,并从它的paint(Graphics g)调用super.paint(g)。现在我想从我的类中直接调用JComponentPaint方法。有没有办法做到这一点。我在下面尝试,但给出了错误 getParent().getParent().paint(g); getParent().getParent().paint(g); 或者你可以通过以下方式理解这一点 T

我正在开发applet,我的类扩展了一个第三方api类,它有自己的paint(Graphics g)方法。这个类扩展了JComponent,并从它的paint(Graphics g)调用super.paint(g)。现在我想从我的类中直接调用JComponentPaint方法。有没有办法做到这一点。我在下面尝试,但给出了错误

getParent().getParent().paint(g); 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 } } 第三方类扩展JComponent{ 公共空间涂料(图g){ 超级油漆(g); //一些工作 } } MyClass扩展了第三方类{ 公共空间涂料(图g){ getParent().getParent().paint(g);//在给出异常时不起作用 } }
getParent()
方法的作用与您认为的不同。它与继承和超类无关。它只返回该组件在UI中所在的awt容器

例如,如果组件位于滚动窗格内,而滚动窗格位于面板内,则调用
getParent().getParent().paint(g)将调用面板的绘制方法

方法的作用与您认为的不同。它与继承和超类无关。它只返回该组件在UI中所在的awt容器

例如,如果组件位于滚动窗格内,而滚动窗格位于面板内,则调用
getParent().getParent().paint(g)将调用面板的绘制方法


首先,getParent不获取继承父级;它获取组件父级,因此您尝试的并不是您想要的,即使它确实有效


其次,我认为是时候重新考虑小程序的设计了。如果您不希望继承的类的行为,那么为什么要继承它?为什么不直接从组件继承呢?我认为如果你试图将你的类变成第三方的子类,然后绕过第三方的一些行为,而不是全部行为,可能会有各种各样的后果。

首先,getParent没有得到继承父类;它获取组件父级,因此您尝试的并不是您想要的,即使它确实有效


其次,我认为是时候重新考虑小程序的设计了。如果您不希望继承的类的行为,那么为什么要继承它?为什么不直接从组件继承呢?我认为如果你试图把你的类变成第三方的一个子类,然后绕过第三方的一些行为,而不是全部,可能会有各种各样的后果。

实际上,我程序中的基本问题是,但当我反编译第三方类时,发现它也有paint方法,调用它的super paint。在这幅画的最后,它还做了一些其他的努力。所以我只想在我的类中重写这个画图,这样我就可以绕过第三方画图的画图。我想,要么你在JCChart中发现了一个bug,要么你没有以某种方式正确使用工具提示功能。我不知道,我对那个图书馆不熟悉。但是你不可能通过在你的超类中绕过super.paint来解决这个问题,这是毫无意义的。实际上我程序中的基本问题是在,但当我反编译第三方类时,发现它也有调用它的super-paint的paint方法。在这幅画的最后,它还做了一些其他的努力。所以我只想在我的类中重写这个画图,这样我就可以绕过第三方画图的画图。我想,要么你在JCChart中发现了一个bug,要么你没有以某种方式正确使用工具提示功能。我不知道,我对那个图书馆不熟悉。但是你不可能通过在你的超类中绕过super.paint来解决这个问题,它只是没有任何意义。