如何在函数java之后设置延迟

如何在函数java之后设置延迟,java,swing,delayed-execution,Java,Swing,Delayed Execution,我正在用java开发一个存储卡游戏。我需要在SelectedFile.hideFace()之后进行延迟 Control.java “延迟”是什么意思?正常情况下,Thread.sleep(毫秒)将完成此工作,但程序将在此时完全停止 如果你想有一个延迟动作(比如500毫秒后隐藏卡),你可以这样安排: import java.util.Timer; import java.util.TimerTask; // ... SelectedTile.hideFace(); new Timer().sc

我正在用java开发一个存储卡游戏。我需要在SelectedFile.hideFace()之后进行延迟

Control.java
“延迟”是什么意思?正常情况下,Thread.sleep(毫秒)将完成此工作,但程序将在此时完全停止

如果你想有一个延迟动作(比如500毫秒后隐藏卡),你可以这样安排:

import java.util.Timer;
import java.util.TimerTask;

// ...
SelectedTile.hideFace();

new Timer().schedule(new TimerTask() {
    public void run() {
        tile.hideFace();
    }
}, 500); // hide face after 500 ms
// ...

当谈到Java时,我们通常会说method.mableeduplicationof@david99world,这是个坏主意。这将阻止EDT@ᴍ阿伦ᴍ阿伦:OP还没有提到,他真正想做的是在他的拖延中!那么为什么不阻止EDT呢?;)值得注意的是,在Java中,以大写字母开头命名变量或字段通常被认为是不好的形式。大写字母通常表示类名。这不会影响代码的功能—JVM不在乎—但当您向他人展示代码时,它会影响可读性。这实际上是一个答案@ᴍ阿伦ᴍ阿伦。。我只想指出,它停止活动线程,而不是整个程序。你能详细说明你的问题吗?基本上,当我选择第二张卡片时,我想稍微停顿一下,第二张卡片将显示一段时间。暂停结束后,两张牌都会返回。(hideface)
javax.swing.Timer
的一个实例与
java.util.Timer
相比有几个优点。
package Tiles;

public class Tile extends JLabel implements MouseListener{

    private static final long serialVersionUID = 1L;

    private ImageIcon faceColor = new ImageIcon("src//background.png"); // standaard image (back)
    private final static Dimension size = new Dimension(71,96);

    public Tile(ImageIcon kleur)
    {
        setFaceColor(kleur);
        setMinimumSize(size);
        setMaximumSize(size);
        setPreferredSize(size);
        setOpaque(true);
        setIcon(new ImageIcon("src//background.png"));
        addMouseListener(this);
    }


    public void showFace()
    {
        //setBackground(faceColor);
        setIcon(faceColor);
    }
    public void hideFace()
    {
        setIcon(new ImageIcon("src//background.png"));
        //setBackground(new Color(213,86,31));
    }

    protected void setFaceColor(ImageIcon c)
    {
        this.faceColor = c;
    }

    public ImageIcon getFaceColor()
    {
        return this.faceColor;

    }


    public void mouseClicked(MouseEvent arg0) {
        control.Control.CurrentWindow.TileClicked(this);
    }


    public void mouseEntered(MouseEvent arg0) {

    }


    public void mouseExited(MouseEvent arg0) {

    }


    public void mousePressed(MouseEvent arg0) {

    }


    public void mouseReleased(MouseEvent arg0) {


    }
}
import java.util.Timer;
import java.util.TimerTask;

// ...
SelectedTile.hideFace();

new Timer().schedule(new TimerTask() {
    public void run() {
        tile.hideFace();
    }
}, 500); // hide face after 500 ms
// ...