2

我实现的移动文本自动收录器移动不顺畅,当并行执行繁重的 GUI 操作时,问题更严重。
我通过创建自己的将要绘制的图像来使用手动双缓冲。
在数据更改时,我使用以下代码更新我的缓冲图像:

    public static BufferedImage createBufferedImage(int w, int h) {
      GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
      GraphicsDevice gs = ge.getDefaultScreenDevice();
      GraphicsConfiguration gc = gs.getDefaultConfiguration();
      return gc.createCompatibleImage(w, h, Transparency.TRANSLUCENT);
    }

然后我使用 drawText(..) 在其上绘制所需的文本,然后调用 repaint()。

并行地,每 10 毫秒,一个异步线程计算图像的下一个 X 位置,然后调用 repaint()。

我的主要组件扩展了 JComponet,并覆盖了paintComponent(),如下所述:

    @Override
    protected void paintComponent(Graphics g) {
      super.paintComponent(g);
      g.drawImage(baseImage, scrollTextX, 0, null);
    }

有没有什么技巧可以让运动变得更好?
如何使代码移动不受其他 GUI 操作的影响?

4

1 回答 1

0

我猜这是在 Swing 应用程序中使用的?然后我认为你应该从 AWT 事件调度线程更新 UI。您可以通过使用SwingUtilities类中的invokeLater方法来做到这一点。

于 2012-05-04T07:25:19.760 回答