Java 奇怪的阵列故障
我正在用JavaSwing制作一个ludo游戏(针对CPU和人类玩家),使用Jframe。总共有70个移动按钮,我试着制作三个阵列,两个用于固定两名玩家的标记位置,第三个用于固定所有按钮,但似乎有问题Java 奇怪的阵列故障,java,arrays,jframe,jbutton,Java,Arrays,Jframe,Jbutton,我正在用JavaSwing制作一个ludo游戏(针对CPU和人类玩家),使用Jframe。总共有70个移动按钮,我试着制作三个阵列,两个用于固定两名玩家的标记位置,第三个用于固定所有按钮,但似乎有问题 private static javax.swing.JButton B1; private static javax.swing.JButton B10; private static javax.swing.JButton B11; 等等 static JButton[] allButton
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,因为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();
}
X类{
private static X;//可能是一个实例。
私有JButton[]按钮;
公共X(){
按钮=新的JButton[70];
用于(int i=0;i
然后你从一开始就有了数组。在初始化和调用
moverB
之间会发生什么?还有什么可以修改任何一个数组吗?数组不会以任何方式被修改。在你将按钮放入数组之前,你是否初始化B
变量?以及System.out.println的输出是什么(allButtons[31]);
和System.out.println(positionsB[0]);
?@ChetanKinger Wait.。我认为在Java中null==null
解析为true
?问题是Jframe会以这种方式自动声明Jbuttons,有没有办法覆盖它?这很好。可能是静态字段的问题(一次全局)与(JFrae对象的)非静态字段?也许您首先在一个新的protype应用程序中尝试这个概念。制作一个按钮,并使用该代码生成一个按钮数组。