gpt4 book ai didi

java - 单击后等待一秒并更改 JLabel 图标

转载 作者:行者123 更新时间:2023-12-01 06:18:40 25 4
gpt4 key购买 nike

我正在开发我的第一个 Swing 应用程序。这是一种使用扑克牌的内存游戏。

我使用 JLabel 模拟卡片s 以及正面和背面的设置图标。每张卡都有一个 MouseListener当用户单击时,我检查两张卡是否相同。如果它们不是同一张卡,我想将这两张卡显示一两秒钟,并在此延迟后将图标更改回来。

我尝试使用sleep , wait , invokeLater , invokeAndWait ...但没有任何效果。

这是我的主课:

public class Main {

public static void main(String[] args) throws FontFormatException, IOException {

SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
try {
MyApp window = new MyApp();
} catch ( FontFormatException | IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
}
}

MyApp继承自JFrame 。在其中,我将所有卡片添加到一个面板中:

while ( cont < cardsInGame.size() ){            
this.cardsInGame.get(cont).setBounds(x, y, 100, 140);
panelTablero.add(cardsInGame.get(cont));
cardsInGame.get(cont).addMouseListener(this);

x = x+108+5;
if ( (cont+1)%8 == 0 && cont != 0){
y = y+140+15;
x = 53;
}
cont++;
}

这是 MouseListener:

public void mouseClicked(MouseEvent e) {

Card selectedCard = (Card)e.getSource();

if (selectedCard != activeCard){
selectedCard.setIcon(new ImageIcon("img/"+selectedCard.getSuit()+selectedCard.getValue()+".png"));

//JOptionPane.showMessageDialog(vp, "Wait");

if ( activeCard != null && !activeCard.getPaired()) {
int result = activeCard.isPair(selectedCard);
pairsTried++;
if ( result != 0 ){
// PAIR
}
else{
// I WANT TO WAIT HERE
// NO PAIR
selectedCard.setIcon(new ImageIcon(CARD_BACK));
activeCard.setIcon(new ImageIcon(CARD_BACK));
}
activeCard = null;
}
else{
activeCard = selectedCard;
}
}
}

如果我调用JOptionPane.showMessageDialog(vp, "Wait")在我的代码中,一切正常。图标将刷新,然后等待对话框“确定”。如果没有,图标永远不会刷新(或者速度超快并且不显示)。

如何添加此延迟?

最佳答案

你是否尝试过将 Therad 放入其中?

        Runnable r = new Runnable() {
public void run() {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
Thread asd = new Thread(r);
asd.start();

关于java - 单击后等待一秒并更改 JLabel 图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17004612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com