Java 来自另一个类的框架中的JComponent repaint()

Java 来自另一个类的框架中的JComponent repaint(),java,swing,oop,reference,Java,Swing,Oop,Reference,我工作的乐趣发展和老80的80提请80扑克游戏 class DDHGamePanel extends JPanel{ ...etc... DDHAdvertising adv = new DDHAdvertising(); ...etc... public void paintComponent(Graphics g) { adv.isOptimizedDrawingEnabled(); adv.setEnabled(true); adv.repaint(); } } 这是我游戏的

我工作的乐趣发展和老80的80提请80扑克游戏

class DDHGamePanel extends JPanel{
...etc...   
DDHAdvertising adv = new DDHAdvertising();
...etc...

 public void paintComponent(Graphics g) {
adv.isOptimizedDrawingEnabled();
adv.setEnabled(true);
adv.repaint();
 }
}
这是我游戏的主面板。我拿出了很多代码,使它更适合。我有一个类DDHAdvertising,它有一个绘画组件

public class DDHAdvertising extends JComponent {

 public void paintComponent(Graphics g) {
           super.paintComponent(g);  
    drawAdvertisingBanner(g,getBanner1(),30,30);
    g.drawString ("Test",40,360);
  }
}
我希望能够在我的
JPanel
中的
paintComponent
末尾,使用
repaint()
方法重新绘制扩展
JComponent
的任何类。我确信这是可以做到的,但我不知道如何做到


我希望我的所有图形类都有一些引用come的组件,例如,所有绘制到屏幕上的卡。我希望屏幕上的每个组件都有一个单独的类,然后调用其
repaint()
方法,该方法应调用该特定类的
paintComponent()
方法。关于这个主题我读了很多书,但是我没有在代码中看到这个特殊的例子。

你想要的是
super.paintComponent(g)paintComponent
中的code>。它会使其所有子对象也重新喷漆。当您重写组件(包括JPanel)时,不应删除此项


您需要的是
super.paintComponent(g)paintComponent
中的code>。它会使其所有子对象也重新喷漆。当您重写组件(包括JPanel)时,不应删除此项


欢迎来到stackoverflow。你应该发一封邮件,我不认为人们会给你发电子邮件,你应该在这里发,因为stackoverflow为将来有同样相关问题的访问者服务。。所以,当你尽最大努力去做这个问题时,你的问题是什么?你看起来像是一个
模板方法吗?“我希望能够在我的
JPanel
paintComponent
的末尾,能够用
repaint()方法重新绘制扩展
JComponent
的任何类。”为什么?如果您是指包含在
DDHAdvertising
中的组件,则使用
super.paintComponent(g)对其进行说明。否则,就不需要重新绘制任何其他内容。对显示该自定义组件的容器执行此操作将导致无限递归。哦,+1到@nachokk表示建议使用SSCCE。这将大大有助于回答我的问题欢迎来到stackoverflow。你应该发一封邮件,我不认为人们会给你发电子邮件,你应该在这里发,因为stackoverflow为将来有同样相关问题的访问者服务。。所以,当你尽最大努力去做这个问题时,你的问题是什么?你看起来像是一个
模板方法吗?“我希望能够在我的
JPanel
paintComponent
的末尾,能够用
repaint()方法重新绘制扩展
JComponent
的任何类。”为什么?如果您是指包含在
DDHAdvertising
中的组件,则使用
super.paintComponent(g)对其进行说明。否则,就不需要重新绘制任何其他内容。对显示该自定义组件的容器执行此操作将导致无限递归。哦,+1到@nachokk表示建议使用SSCCE。这将大大有助于回答我的问题。“
super.paintComponent(g);
。您永远不应该删除此项”我一直认为这是一个奇怪的评论,当我只是真正阅读第二个代码段时,它没有删除它。我在第一个代码片段中错过了它+1是的,如果将adv.repaint()添加到JPanel中,我不确定是否有必要,但我不完全确定他想要什么。“不完全确定”我也不确定-目前和以前一样。;)paintComponent不画孩子们的画,但我吹毛求疵+1尽管如此-1用于在绘制周期中更改组件状态-即使对当前绘制的组件以外的其他组件进行了更改,这也是错误的:绘制的时间/方式/如果未指定,那么无论您做什么,都可能发生或不发生。“
super.paintComponent(g);
。您不应删除此项”我一直认为这是一个奇怪的评论,当我只是真正阅读第二段代码时,并没有删除它。我在第一个代码片段中错过了它+1是的,如果将adv.repaint()添加到JPanel中,我不确定是否有必要,但我不完全确定他想要什么。“不完全确定”我也不确定-目前和以前一样。;)paintComponent不画孩子们的画,但我吹毛求疵+1尽管如此-1用于在绘制周期中更改组件状态-即使对当前绘制的组件以外的其他组件进行了更改,这也是错误的:绘制的时间/方式/情况未指定,因此无论您做什么,都可能发生或不发生。
 public void paintComponent(Graphics g) {
     super.paintComponent(g);
     adv.isOptimizedDrawingEnabled();
     adv.setEnabled(true);
     adv.repaint();
 }