当前位置: 首页 > 知识库问答 >
问题:

使用Java Swing实现平滑运动

祝宾白
2023-03-14

我在使用java Swing获得流畅的运动时遇到了困难。使用这个代码,包括在应用到面板之前使用BufferedImage来绘制图形,会给我带来摇晃和口吃的结果。我如何修复这个问题?

public class SmoothMotion extends JPanel {

    public static final int size = 800;
    public static int pos = 0;

    public static void main(String[] args) {
        JPanel panel = new SmoothMotion();
        JFrame frame = new JFrame("Smooth As");
        frame.setSize(size, size);
        frame.add(panel);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Timer timer = new Timer(17, new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                SmoothMotion.updateItems();
                panel.repaint();
            }
        });
        timer.start();
    }

    public static void updateItems() {
        pos += 4;
        pos = pos > 750 ? 0 : pos;
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.setColor(Color.BLACK);
        g.fillRect(0, 0, size, size);
        g.setColor(Color.RED);
        g.fillRect(pos > 375 ? 750 - pos : pos, 100, 50, 50);
    }
}

共有1个答案

洪伟兆
2023-03-14

>

不需要BuffereImage。Swing在默认情况下是双缓冲的。只需调用super。paintComponent(graphics)首先清除背景,然后进行自定义绘制。

绘制方法不应更改类的属性。你应该有一个像updatePos(…)这样的方法来更新位置。

ActionLIstener将调用updatePos(),然后调用repaint()

请参阅:获取课堂外JPanel的宽度和高度,以获取演示上述许多建议的示例。

 类似资料:
  • 本文向大家介绍Android中实现水平滑动(横向滑动)ListView示例,包括了Android中实现水平滑动(横向滑动)ListView示例的使用技巧和注意事项,需要的朋友参考一下 水平的ListView-HorizontalListView的使用 Android中ListView默认的是竖直方向的滑动,由于项目的需求,需要ListView是水平滑动的。有很多的方式可以实现,但是比较好的一种方式

  • 本文向大家介绍jquery实现图片平滑滚动详解,包括了jquery实现图片平滑滚动详解的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了jquery图片平滑滚动效果的具体代码,供大家参考,具体内容如下 随便写了个DOM,没有美观性,见谅 原理: 1、定义两组ul列表放图,第一个ul放5张图,第二个ul为空 2、为什么要用两个ul?因为要用到jQuery的克隆方法clone()。把第一个

  • 本文向大家介绍Python实现滑动平均(Moving Average)的例子,包括了Python实现滑动平均(Moving Average)的例子的使用技巧和注意事项,需要的朋友参考一下 Python中滑动平均算法(Moving Average)方案: 以上这篇Python实现滑动平均(Moving Average)的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊

  • 我正在开发一个应用程序,其中我使用了AppBarLayout和CollapsingToolbarLayout以及NestedScrollView。我已经成功地实现了这一点,并且运行良好。 现在我想做的是,在嵌套滚动视图上滑动(快速向上滑动)时,它应该完全滚动到顶部。类似地,在向屏幕底部滑动(快速向下滑动)时,它必须平滑地滚动到底部。然而现在,它只能卡在中间,这使它看起来很丑。我已经尝试了许多可用的

  • 我有5刷屏幕和我的代码只是停留在第三个屏幕我想水平滚动。

  • 我很好奇,在放置组件时,如何使用miglaway在网格上均匀分布组件: 例如,如果我在一个按钮组中放置四个JRadioButton以跨越3行2列(2,3),然后放置三个JButton,则分布的权重是不相等的,我最终会得到以下结果: 如图所示,A和B的大小相同,C保留剩余的空间:我希望A、B、C在垂直方向上等于三分之一。 如果这在GridBagLayout中是可能的,我也可以利用它,但是我在任何一种