一个数组:那个数组是空的,你知道吗?

当你像这样创建一个数组时:

static JButton[] fields = new JButton[72];

那个数组是空的。换句话说,即使该数组可以保留 72 个按钮,但它还没有这些按钮,您必须手动添加它们,如下所示:

for (int i = 0; i < 72; i++) {
    fields[i] = new JButton();
}

但如果你不这样做,fields[i] 将默认为null,因此当你尝试执行field.setSize(20, 20) 时,该字段为空并会导致NullPointerException。

原始数组也有默认值。例如int数组的元素都是0,boolean数组的元素都是false。对于非原始数组(如JButton)也是如此,默认情况下元素都是null。

您的最终代码将如下所示:

for (int i = 0; i < 72; i++) {
    fields[i] = new JButton();
    fields[i].setSize(20, 20);
    panel.add(fields[i]);
}

或:

for (int i = 0; i < 72; i++) {
    JButton field = new JButton();
    fields[i] = field;
    field.setSize(20, 20);
    panel.add(field);
}

甚至更短:

for (int i = 0; i < 72; i++) {
    var field = fields[i] = new JButton();
    field.setSize(20, 20);
    panel.add(field);
}

还可以考虑将 72 转换为常量(static final 字段)。

© 版权声明
THE END
喜欢就支持一下吧
点赞280赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容