【发布时间】:2013-03-08 12:23:59
【问题描述】:
我的 Java 小程序中有一个关于我的后备缓冲区的小问题。目前我还没有考虑在运行时调整我的小程序的大小。因此面板被调整大小,而我的后台缓冲区保持其初始大小。因此,只有我的小程序的一部分被重绘,这被我的图像大小所覆盖。尽管如此,我还是尝试使用
重新初始化图像private void createBackBuffer() {
backBuffer = this.getGraphicsConfiguration().createCompatibleVolatileImage(getWidth(), getHeight());
defaultComposite = ((Graphics2D) backBuffer.getGraphics()).getComposite();
defaultStroke = ((Graphics2D) backBuffer.getGraphics()).getStroke();
}
// Reinit on resize
public void adjustBackBufferSize() {
if (backBuffer != null) {
backBuffer.flush();
createBackBuffer();
}
}
不幸的是,它表现得并不欣赏。一旦用户开始拖动以调整浏览器窗口的大小,娱乐意味着在一小段时间内没有后台缓冲区可绘制。因此面板在闪烁,要么是灰色背景,要么是以前的面板,要么是我即将渲染的实际绘图。
我考虑在调整大小时设置宽度和高度的偏移量以降低闪烁行为,但这似乎仍然不是正确的方法,只是一种解决方法。
有没有不闪烁的调整大小的建议?!
亲切的问候。
【问题讨论】:
-
“目前我还没有考虑在运行时调整我的小程序的大小。” Sun 希望小程序具有固定大小。在网页中调整大小的 Applet 一直不可靠。我不会花时间担心它。
-
不过,JApplet 具有转发用户调整大小操作的功能。无论如何,它对我来说仍然很重要。我实际上可以增加初始大小,但这仍然没有让我感觉很好。
标签: java applet double-buffering