如果有必要,有一种简单的方法可以在java applet中禁用双缓冲吗? 我有一个java小程序显示和动画乐谱,所以我需要它双缓冲。但是出于教学目的,我需要打印这个小程序。问题是,在我添加缓冲之前,输出到打印机是基于矢量的所以我可以使它像我想要的那样大,它看起来很光滑(并且还使用更便宜的黑色墨水!)但是双缓冲输出当然是一个形象,而且是一个相当低的分辨率!
基本上我需要使用相同的applet来使用“display_tune”参数调用时使用双缓冲,但是当使用“view_tune”调用时,直接绘制带矢量输出的图形参数
任何帮助都非常感激。
答案 0 :(得分:2)
您可以尝试做类似
的事情yourComponent.setDoubleBuffered(false);
// your print code
yourComponent.setDoubleBuffered(true);
该方法在JComponent
中声明。我使用此解决方案从Jung图表导出PNG并且它有效。我不确定Jung是否将其组件中的方法改写为另一种方法,但尝试时没有受到伤害。
答案 1 :(得分:2)
您应该全局禁用双缓冲,而不仅仅是一个组件。 Swing有一个叫RepaintManager的东西。它允许您启用和禁用双缓冲。