【问题标题】:Temporarily disable double buffering in Java graphics applet在 Java 图形小程序中临时禁用双缓冲
【发布时间】:2010-11-09 12:20:44
【问题描述】:

如有必要,是否有一种简单的方法可以在 Java 小程序中禁用双缓冲? 我有一个显示和动画乐谱的java小程序,所以我需要它双缓冲。但是出于教学目的,我需要打印这个小程序。问题是,在我添加缓冲输出到打印机之前是基于矢量的,因此我可以将其设置为我想要的大小,并且看起来很平滑(并且还使用更便宜的黑色墨水!)但是使用双缓冲输出当然是一张图片,而且分辨率相当低!

基本上,我需要相同的小程序在使用“display_tune”参数调用时使用双缓冲,但在使用“view_tune”调用时直接使用矢量输出绘制图形参数。

非常感谢任何帮助。

【问题讨论】:

    标签: java graphics applet


    【解决方案1】:

    你可以尝试做类似的事情

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

    该方法在JComponent 中声明。我使用此解决方案从Jung 图表中导出 PNG,并且它有效。我不确定 Jung 是否将其组件中的该方法覆盖为不同的东西,但尝试并没有什么坏处..

    【讨论】:

    • 感谢你们的回复,你们似乎指的是同一件事,所以我找到了一些关于双缓冲的信息apl.jhu.edu/~hall/java/Swing-Tutorial/…。我对java的经验是有限的。我使用的是离屏图像,所以我写的是 offscreenImage.drawLine() 而不是 g2d.drawLine() 等。我认为这不是您所指的标准双缓冲?有没有一种简单的方法可以在使用打印版小程序时将“g2d”重命名为“offscreenImage”?
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-08
      • 2011-08-20
      相关资源
      最近更新 更多