暂时禁用Java图形小程序中的双缓冲

暂时禁用Java图形小程序中的双缓冲,java,graphics,applet,Java,Graphics,Applet,如果需要,是否有一种简单的方法可以禁用java小程序中的双缓冲? 我有一个java小程序,可以显示乐谱并制作乐谱动画,所以我需要双缓冲。但是出于教学目的,我需要打印此小程序。问题是,在我添加缓冲之前,打印机的输出是基于矢量的,所以我可以使它看起来像我想要的那样大,并且看起来平滑(并且使用更便宜的黑色墨水!),但是使用双缓冲时,输出当然是一个图像,并且是一个相当低的分辨率 基本上,我需要相同的applet,当使用“display\u tune”参数调用时使用双缓冲,但当使用“view\u tune

如果需要,是否有一种简单的方法可以禁用java小程序中的双缓冲? 我有一个java小程序,可以显示乐谱并制作乐谱动画,所以我需要双缓冲。但是出于教学目的,我需要打印此小程序。问题是,在我添加缓冲之前,打印机的输出是基于矢量的,所以我可以使它看起来像我想要的那样大,并且看起来平滑(并且使用更便宜的黑色墨水!),但是使用双缓冲时,输出当然是一个图像,并且是一个相当低的分辨率

基本上,我需要相同的applet,当使用“display\u tune”参数调用时使用双缓冲,但当使用“view\u tune”参数调用时,使用向量输出直接绘制图形。


非常感谢您的帮助。

您可以通过以下方式尝试

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

该方法在
JComponent
中声明。我使用这个解决方案从图形中导出PNG,它成功了。我不确定Jung是否将其组件中的方法重写为另一种方法,但尝试也没有坏处。

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

多亏了你们两位的回复,你们两人似乎指的是同一件事,所以我找到了一些关于双缓冲的信息。我对java的经验有限。我使用的是屏幕外图像,所以我没有使用g2d.drawLine()等,而是使用屏幕外图像.drawLine()。我想这不是您所指的标准双缓冲?在使用小程序的打印版本时,是否有一种简单的方法将“g2d”重命名为“offscreenImage”?