java - 按鼠标左键添加新对象
问题描述
Object
获得了一个实例数组( Sprites
),获得了通过按鼠标左键将新对象添加到数组的方法:
private void addSprite() {
addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
int x = e.getX();
int y = e.getY();
Sprite sprite = new Ball(x, y);
if (sprites[sprites.length - 1] == null){
sprites[sprites.length - 1] = sprite;
}else if (sprites[sprites.length - 1] != null){
Sprite[] temp = new Sprite[sprites.length * 2];
System.arraycopy(sprites, 0, temp, 0, sprites.length);
sprites = temp;
}
}
});
}
如果arr
已满,我创建新的临时数组,大小为sprites.length * 2
,并复制 a 中的所有元素temporary array
,并更改链接sprites = temp
,我得到了NullPointerException
. 任务仅使用数组添加新对象,而不是ArrayList
.
我究竟做错了什么?
解决方案
像这样工作:
private void addSprite() {
addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
int x = e.getX();
int y = e.getY();
Sprite sprite = new Ball(x, y);
if (sprites[count] == null){
sprites[count] = sprite;
count++;
}else if (sprites[count] != null){
Sprite[] temp = new Sprite[sprites.length + 1];
System.arraycopy(sprites, 0, temp, 0, sprites.length);
temp[sprites.length] = sprite;
sprites = temp;
}
}
});
}
如果创建数组大小::sprites.length * 2
问题是java尝试update
和render
null
元素array
如果创建sprites.length + 1
并添加最后一个index
元素,则数组中没有null
元素,它工作正常。
推荐阅读
- c++ - {fmt} 库:如何使用 RegEx 添加编译时字符串检查?
- mysql - 从 2 个表中获取数据
- php - 如何从数据库中的 wp_usermeta 表中获取值?
- javascript - 为什么这会返回一个数字而不是布尔值
- ios - Firebase 电子邮件链接身份验证无法打开 iOS App Store
- excel - 使用单元格中的一个字母进行excel搜索
- javascript - 如何在本机反应中设计半圆形/椭圆形?
- c++ - 找不到C++版本的系统头文件
- angular - 从 Angular 7 迁移到 8 后,ng build in docker 失败
- mongodb - 具有特定字段的mongodb过滤器数组