调用内部类的repaint不会触发paint()实际上没有任何作用

时间:2018-11-18 05:56:06

标签: java swing repaint japplet

我对JApplet不太熟悉 并绘制和重新绘制()。任何帮助表示赞赏。

我有一个外部类“ A”,它扩展了JApplet并在其paint()中绘制了一些东西 我还有一个私人类“ B”,它位于A内,并且扩展了JApplet并绘制 东西在其paint()中。 A的paint()引起B的paint(),因此当A运行时,A和B都被绘制。

我使用鼠标侦听器来检测何时单击了鼠标,即 B应该repaint()并绘制一些新内容并删除较旧的内容。

但是,当我按下鼠标时,我看到B的repaint()没有任何作用。 我在控制台上打印了一些调试消息,我可以告诉 当调用B的repaint()时,什么也没有发生,即该程序应该通过 B再次使用paint(),但没有。

这是常规结构,再次感谢您的帮助

babel

1 个答案:

答案 0 :(得分:2)

问题是您的repaint()类中的B请求没有任何反应。可能会触发B类的重画,但这并不意味着A类被重画,没有人告诉他。就像你说的那样:

  

A的paint()会唤起B的paint(),因此当A运行时,会同时绘制A和B。

是的,但这并不意味着相反。

当您想要A类重绘内容时,您必须在repaint()对象上调用A,因为这是您想要重绘的类。