我使用Jframe在java swing中制作了一个ludo游戏(对于CPU和人类玩家)。总共有70个移动按钮,我试图制作三个阵列,两个用于保持两个玩家的令牌位置,第三个用于按住所有按钮,但似乎存在问题。
private static javax.swing.JButton B1;
private static javax.swing.JButton B10;
private static javax.swing.JButton B11;
依旧......
static JButton[] allButtons = {B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, B22, B23, B24, B25, B26, B27,
B28, B29, B30, B31, B32, B33, B34, B35, B36, B37, B38, B39, B40, B41, B42, B43, B44, B45, B46,
B47, B48, B49, B50, B51, B52, B53, B54, B55, B56, B57, B58, B59, B60, B61, B62, B63, B64, B65,
B66, B67, B68, B69, B70};
static JButton[] positionsA = {null, null, null, null};
static JButton[] positionsB = {B40, null, null, null};
现在,问题是此语句返回false
JButton moverB(){
System.out.println(allButtons[31]==positionsB[0]);
}
两个指数均指B40
答案 0 :(得分:0)
由于all数组以[0]
处的B9开头,然后向上计数,[31]
应为B40。
然而,两个数组声明中的B40应该已经初始化;我没有看到这样的事情:
private static javax.swing.JButton B40 = new JButton();
事实上,这可能使得上面的阵列技术可能不那么好。
最好立即使用数组启动。如果可能的话,也要避免静电。 有点像:
class X {
private static X x; // Maybe one instance.
private JButton[] buttons;
public X() {
buttons = new JButton[70];
for (int i = 0; i < buttons.length; ++i) {
JButton button = new JButton();
...
buttons[i] = button;
}
}
public static void main(String[] args) {
X.x = new X();
}
然后你从一开始就拥有你的数组。