如果我在Eclipse中包含println代码并启动,那么Java控制台主要打印三个“x”。有时打印两个“x”。为什么不打印只有一个“x”?
public void paint(Graphics g) {
super.paint(g);
setBackground(background);
System.out.println("x");
// graphic etc.
}
答案 0 :(得分:3)
许多事情可以通过调用repaint()
来触发绘制调用(包括代码),通过渲染GUI来触发JVM,以及通过告诉JVM"脏"来操作系统。区域需要绘制,并了解这是你无法控制的。出于这个原因(以及其他人),程序逻辑应该保持在所有绘制方法之外。如果您需要帮助,请务必发布更相关的代码。
有关详情,请参阅:Painting in AWT and Swing。
作为附带建议请注意,如果你的是Swing应用程序,那么很少会覆盖paint方法,而应该覆盖JPanel或JComponent的paintComponent
方法。
Side rec 2:永远不要在绘画方法中调用setBackground(...)
。这将触发不必要的重画,这也是您看到三个" x"正在印刷。相反,可以从你班级的构造函数中调用一次。