首页 文章

如何绕过父类绘制方法的调用

提问于
浏览
0

我正在研究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
   }
}

2 回答

  • 2

    首先,getParent不会获得继承父级;它获得了Component父级,所以你正在尝试的并不是你想要的,即使它确实有效 .

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

  • 2

    getParent() 方法没有按照您的想法执行 . 它与继承和超类无关 . 它只返回该组件在UI中所处的awt容器 .

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

    enter image description here

相关问题