为什么不直接在JFrame中绘制

时间:2014-06-03 23:39:50

标签: java swing paint paintcomponent

任何人都可以解释为什么不应该使用paint方法直接在JFrame窗口内绘制,我应该使用paintComponent方法{{1}在JPanel内部?

提前致谢。

1 个答案:

答案 0 :(得分:4)

三个主要原因......

  1. 顶级容器没有双重缓冲,在重新绘制框架时会导致闪烁,是的,您可以实现自己的双重缓冲,但是...
  2. 在框架内绘画不考虑框架边框,这意味着可以在框架下绘画。框架边框也是平台/外观特定的,这意味着尺寸更改
  3. 在Swing窗口的情况下,窗口中已经存在组件,这意味着它们在大多数情况下都会绘制(或被绘制)(由于Swing中优化的绘制引擎),难以产生合理的结果
  4. 对于第2点,框架装饰画在"窗口中#34;界限,不在他们之外

    看看......

    了解更多详情

    有时间阅读Painting in AWT and SwingPerforming Custom Painting以了解更多详情