如何让一个点上下移动

How to make an point move up and down

我正在尝试在 JFrame 中上下移动简笔画。当我更改 y 时,整个事情都会移动。但我想让它向上移动,等一下,然后向下移动。 Thread.sleep 没有工作。 comp是一个class画简笔画的对象。

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

Swing 是一个单线程环境,它的功能也得到了合理的优化。

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

有关详细信息,请参阅 Concurrency in Swing

您 "can" 所做的是推迟第二次更新,使用类似 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();
}

...例如。

有关详细信息,请参阅 How to use Swing Timers

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

我也不鼓励使用 KeyListeners,因为它们带来的麻烦多于它们的价值,而是鼓励使用键绑定 API,请参阅 How to Use Key Bindings更多详情