gpt4 book ai didi

java - 正确更新 Swing 组件?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:51:06 26 4
gpt4 key购买 nike

我是 Swing 新手,感谢任何帮助。

在这段代码中,我将一张牌翻过来,如果结果不匹配,我希望他们再次翻过来面朝下。

目前正在发生的事情:1.点击第一张牌翻面2. 当点击第二张卡片时,会发生以下两种情况之一(a) 如果它们是一样的,它们都会熬夜,这就是我想要的(b) 如果它们不一样,我根本看不到第二张卡片,因为它会立即重新显示卡片的背面(以及我的方法中定义的前一张卡片的背面)。

我认为放休眠眠定时器可能会使第二张卡片显示一段时间,然后再翻过来,但事实并非如此。

我尝试使用 contentPane.revalidate(); & contentPane.repaint();但它不会改变任何东西。

我输入了一些控制台输出:

Console output:
Card: 0 set
Card: 6 set
Sleeping now
Card: 6 unset
Card: 0 unset

上面是点击两张不匹配的卡片时控制台输出的结果

@Override
public void actionPerformed(ActionEvent e)
{
String buttonPressed = e.getActionCommand();
int pos = Integer.valueOf(buttonPressed);
action = Control.model.ReceiveCardsTurned(pos);

keypadArray[pos].setIcon(myIcons[pos]);
System.out.println("Card: "+pos+" set");
currentTime.setText("" + Control.model.time);
currentScore.setText("" + Control.model.score);

//contentPane.revalidate();
//contentPane.repaint();

if(Control.model.twoCardsTurned == false)
{
if (action == "unturn")
{
System.out.println("Sleeping now");

try
{
Thread.sleep(1000);
}

catch (InterruptedException e1)
{
e1.printStackTrace();
}

keypadArray[pos].setIcon(back);
keypadArray[Control.model.lastCard].setIcon(back);
System.out.println("Card: "+pos+" unset");
System.out.println("Card: "+Control.model.lastCard+" unset");
}
}
}

最佳答案

您不能在事件分派(dispatch)线程中 hibernate ,因为您的 GUI 会卡住。你必须使用 Swing Timer .对于您将来可能需要担心的后台任务,请查看 SwingWorker .

关于java - 正确更新 Swing 组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13870982/

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