小编Ron*_*Ron的帖子

正确更新摆动组件?

我是新手,任何帮助表示感谢.

在这段代码中,我正在翻牌,如果事实证明他们不匹配,我希望他们再次面朝下.

目前正在发生的事情:1.当点击时,第一张卡翻过来2.当点击第二张卡时,发生两件事情中的任何一件(a)如果他们是相同的他们都熬夜这是我想要的(b)如果他们是不一样的我从来没有看到第二个卡,就好象它立即重新显示卡的背面(也为我的方法定义的前面卡的背面).

我认为放入睡眠计时器可能会让第二张卡显示一段时间后再转回,但事实并非如此.

我试图使用contentPane.revalidate(); &contentPane.repaint(); 但它没有改变任何东西.

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

Console output:
Card: 0 set
Card: 6 set
Sleeping now
Card: 6 unset
Card: 0 unset
Run Code Online (Sandbox Code Playgroud)

上面是单击两张不匹配的卡时产生的控制台输出

@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"); …
Run Code Online (Sandbox Code Playgroud)

java concurrency swing timer event-dispatching

6
推荐指数
2
解决办法
255
查看次数

标签 统计

concurrency ×1

event-dispatching ×1

java ×1

swing ×1

timer ×1