Java paint()只能调用一次吗?

时间:2015-11-10 17:38:42

标签: java paint

如果我在Eclipse中包含println代码并启动,那么Java控制台主要打印三个“x”。有时打印两个“x”。为什么不打印只有一个“x”?

public void paint(Graphics g) {
    super.paint(g);
    setBackground(background);
    System.out.println("x");

    // graphic etc.
}

1 个答案:

答案 0 :(得分:3)

许多事情可以通过调用repaint()来触发绘制调用(包括代码),通过渲染GUI来触发JVM,以及通过告诉JVM"脏"来操作系统。区域需要绘制,并了解这是你无法控制的。出于这个原因(以及其他人),程序逻辑应该保持在所有绘制方法之外。如果您需要帮助,请务必发布更相关的代码。

有关详情,请参阅:Painting in AWT and Swing

作为附带建议请注意,如果你的是Swing应用程序,那么很少会覆盖paint方法,而应该覆盖JPanel或JComponent的paintComponent方法。

Side rec 2:永远不要在绘画方法中调用setBackground(...)。这将触发不必要的重画,这也是您看到三个" x"正在印刷。相反,可以从你班级的构造函数中调用一次。