我怎样才能移动板块?

时间:2012-05-01 12:34:44

标签: java swing jbutton move actionlistener

我正在制作棋盘游戏并且无法移动它们。这件作品将根据骰子结果移动。下面是我尝试做的但它不起作用。(来自button []。addActionListener(new ActionListener())注意:我使用ImageIcon来表示我的作品。有什么帮助吗?

    //Puts the player 1 piece on button 1,3,5,7,9 and player 2 piece on button 2,4,6,8,10 
    if ((btnNumber - 1) < 10) 
    { 
        if (((btnNumber - 1) % 2) == 0) 
        { 
            buttons[btnNumber - 1].setIcon(piece1); 
        } 
        else 
        { 
            buttons[btnNumber - 1].setIcon(piece2); 
        } 
    } 
    centerPanel.add(buttons[btnNumber - 1]); 
} 

frame.add(centerPanel, BorderLayout.CENTER); 

1 个答案:

答案 0 :(得分:3)

看起来好像还有一些基本的东西还没有完全掌握。以下是一些更接近目标的建议:

  1. button[].addActionListener是一个荒谬的陈述。您无法一次向整个数组添加动作侦听器。也许您打算说buttons[btnNumber - 1].addActionListener并将其放在for循环中。
  2. buttons[]==ImageIcon("piece1")也是一个毫无意义的陈述(它甚至不应该编译)。您可以尝试buttons[btnNumber - 1] == ImageIcon("piece1"),但有更简单的方法(#3)。
  3. 不是基于它是否等于图像图标实例来确定作品的位置,而是为什么不随着作品移动而保持更新的变量piece1Locationpiece2Location。然后你会立即知道这些部分的位置,并且你的逻辑将简化为if (btnNumber - 1 == piece1Location)
  4. 在Java中,数组从索引0开始。使用for循环在Java中使用数组的最简洁方法是在0处启动索引变量,并将您的比较从<=更改为<。使用以下for(int i = 0; i < 30; i++),您无需继续说btnNumber - 1
  5. 您的代码组织有点混乱,并且在模型和演示文稿之间紧密集成。您应该寻求将处理显示板和片段(演示)的逻辑与处理游戏机制(滚动骰子,移动片段等)的逻辑分开。这将极大地帮助您维护代码并跟踪正在发生的事情。