0

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

getParent().getParent().paint(g);

或者您可以通过以下方式理解这一点

ThirdPartyClass 扩展 JComponent{

    公共无效油漆(图形g){
     super.paint(g);
     //一些工作
    }
}

MyClass 扩展 ThirdPartyClass{

   公共无效油漆(图形g){
      getParent().getParent().paint(g); // 不工作给出异常
   }
}

4

2 回答 2

2

getParent()方法不会像您认为的那样做。它与继承和超类无关。它只是返回该组件位于UI中的 awt 容器。

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

在此处输入图像描述

于 2012-12-11T12:16:44.153 回答
2

首先,getParent 没有得到继承父级;它获取Component父级,因此您尝试的操作不会做您想做的事情,即使它确实有效。

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

于 2012-12-11T12:17:01.157 回答