如何在函数java之后设置延迟
我正在用java开发一个存储卡游戏。我需要在SelectedFile.hideFace()之后进行延迟 Control.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
“延迟”是什么意思?正常情况下,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
// ...