2010-11-09 41 views
2

有没有简单的方法可以在必要时禁用java applet中的双缓冲? 我有一个Java applet,显示和动画乐谱,所以我需要它双缓冲。然而,为了教学目的,我需要打印这个小程序。问题是,在我添加缓冲区之前,打印机的输出是基于矢量的,所以我可以使其达到我想要的那么大,并且看起来很平滑(并且也使用更便宜的黑色墨水!),但是使用双缓冲输出当然是一个图像,而且是一个相当低的资源!暂时禁用Java图形applet中的双缓冲

基本上我需要同样的小程序使用双缓冲,当它被称为与“display_tune”参数绘制直线图形与矢量输出,当它被称为与“view_tune”参数。

任何帮助非常感谢。

回答

2

你可以通过执行类似

yourComponent.setDoubleBuffered(false); 
// your print code 
yourComponent.setDoubleBuffered(true); 

方法在JComponent宣布尝试。我使用此解决方案从Jung图中导出PNG,并且它工作正常。我不知道Jung是否会将组件内的方法置换到其他组件中,但在尝试中没有受到伤害。

+0

感谢你们两位的回复,你们似乎都指同一件事,所以我找到了一些信息http://www.apl.jhu.edu/~hall/java/Swing-Tutorial/Swing-Tutorial -Printing.html双缓冲。我对java的使用经验有限。我使用的是一个离屏图像,所以不是g2d.drawLine()等,我正在写offscreenImage.drawLine()。我认为这不是你所指的标准双缓冲?是否有一种简单的方法,只需将“g2d”重命名为“offscreenImage”即可使用打印版本的小应用程序? – jason 2010-11-09 14:32:42

2

您应该全局禁用双缓冲,而不仅仅针对一个组件。 Swing有一种叫做RepaintManager的东西。它允许您启用和禁用双缓冲。