为什么不直接在JFrame中绘制
任何人都可以解释我为什么不应该使用paint
方法直接在JFrame
窗口内绘制,我应该使用paintComponent
方法与JFrame
内的JFrame
?
提前致谢。
三个主要原因……
- 顶级容器不是双缓冲的,当重新绘制框架时会导致闪烁,是的,你可以实现你自己的双缓冲,但……
- 在框架内绘画不考虑框架边框,这意味着可以在框架下绘画。 框架边框也是平台/外观特定的,这意味着尺寸会发生变化
- 在Swing窗口的情况下,窗口上已经存在组件,这意味着它们在大多数情况下都会绘制(或被绘制)(由于Swing中优化的绘制引擎),因此难以生成一个合理的结果
对于点#2,框架装饰在“窗口”边界内绘制,而不是在它们之外
看一眼…
- 即使在重新resize时,如何获得屏幕的中间位置
- Java AWT drawString()不会显示在窗口上
- 我怎么能在中间设置?
更多细节
花时间阅读AWT和Swing中的 绘画以及执行自定义绘画以获取更多详细信息