如何使一个点上下移动



我正在尝试在JFrame中上下移动简笔画。当我改变y它时,整个事情都会移动。但我希望它向上移动,等一下,然后向下移动。 Thread.sleep一直没有奏效。 comp是一个类的对象绘制简笔画。

if(key == KeyEvent.VK_UP)
{
    comp.setY(y++);
    comp.setY(y--);
}

Swing 是一个单线程环境,它也针对它的功能进行了合理的优化。

重绘管理器可能会将repaint请求压缩为单个请求,因此您只能看到最后一个请求。

有关更多详细信息,请参阅 Swing 中的并发。

您"可以"做的是推迟第二次更新,使用类似 Swing Timer 的东西......

像...

if(key == KeyEvent.VK_UP)
{
    comp.setY(y++);
    // You may need to force a repaint here
    Timer timer = new Timer(1000, new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent evt) {
            comp.setY(y--);
            // You may need to force a repaint here
        }
    });
    timer.setRepeats(false);
    timer.start();
}

。例如。

有关更多详细信息,请参阅如何使用摆动计时器。

就个人而言,我会设置一个能够根据它携带的状态变量执行向上和向下移动的Timer,但这就是我

我也不鼓励使用 KeyListener s,因为它们比它们的价值更麻烦,而是鼓励使用键绑定 API,请参阅如何使用键绑定以获取更多详细信息

相关内容

  • 没有找到相关文章

最新更新