-1

我试图在按下按钮以将图像图标设置为某个图像时设置延迟,然后设置另一个延迟以便设置另一个图像,所有这些都只需单击即可。换句话说 :

单击一个按钮->设置图像->延迟->设置另一个图像。

我在代码中得到的只是最后一个状态“设置另一个图像”。

我也不想使用使用计时器,我想使用延迟。

这里是我关心的代码部分。

btnNewButton.addMouseListener(new MouseAdapter() {
    @Override
    public void mouseClicked(MouseEvent e) {
    lblNewLabel.setIcon(and);   
sleeep(500);
        lblNewLabel.setIcon(app);
    }
});

这是延迟函数

 void sleeep(int n)
{
    try {
        Thread.sleep(n);
    } catch(InterruptedException ex) {
        Thread.currentThread().interrupt();
    }
}
4

2 回答 2

1
  1. 不要添加MouseListenerJButton,也不要mouseClicked()添加,顺便说一句,ActionListener所有事件都正确实现MouseKeyJButton API

  2. 不要使用Thread.sleep(n);您对Swing 中的 Concurency有问题,请改用Swing Timer

于 2013-11-13T13:21:39.737 回答
0

您应该尝试使用 InvokeLater 在事件调度线程中执行设置图像的代码。

SwingUtilities.invokeLater(new Runnable() {
    public void run() {
        lblNewLabel.setIcon(and);
    }
});

sleeep();

SwingUtilities.invokeLater(new Runnable() {
    public void run() {
        lblNewLabel.setIcon(and);
    }
});
于 2013-11-13T12:36:10.720 回答