标签二维数组 | JavaFX
Label 2D-Array | JavaFX
我想用 Javafx 标签填充一个二维数组,我可以在单击它时更改其中的文本。
这是我的实际代码,但它返回 NullPointer 异常。
Blockquote
`public static Label[][] initWelt() {
Label[][] welt = new Label[DIM1][DIM2];
for (int x = 1; x < welt.length - 1; x++) {
for (int y = 1; y < welt.length - 1; y++) {
if (Math.random() > 0.4) {
welt[x][y].setText("X");
}
else{
welt[x][y].setText(" ");
}
}
}
return welt;
}`
it's returning a NullPointer Exception.
下面的代码唯一做的就是初始化一个 two-dimensional
数组,它不会填充 two-dimensional
数组,因此会出现 NullPointerException
。
Label[][] welt = new Label[DIM1][DIM2];
基本上你不能这样称呼:
welt[x][y].setText("X");
不使用对象引用填充 two-dimensional
数组。
要解决这个问题,首先填充二维数组,如下所示:
Label[][] welt = new Label[DIM1][DIM2];
for(int i = 0; i < DIM1; i++){
for(int j = 0; j < DIM2; j++){
welt[i][j] = new Label();
}
}
然后您可以继续手头的当前任务。
所以现在你的代码变成这样:
public static Label[][] initWelt() {
Label[][] welt = new Label[DIM1][DIM2];
for(int i = 0; i < DIM1; i++){ //populate the array
for(int j = 0; j < DIM2; j++){
welt[i][j] = new Label();
}
}
for (int x = 0; x < DIM1; x++) {
for (int y = 0; y < DIM2; y++) {
if (Math.random() > 0.4) {
welt[x][y].setText("X");
}
else{
welt[x][y].setText(" ");
}
}
}
return welt;
}
注意 - 我个人认为重构当前方法并在不同的方法中插入填充 two-dimensional
数组的代码会更好。
我想用 Javafx 标签填充一个二维数组,我可以在单击它时更改其中的文本。 这是我的实际代码,但它返回 NullPointer 异常。
Blockquote
`public static Label[][] initWelt() {
Label[][] welt = new Label[DIM1][DIM2];
for (int x = 1; x < welt.length - 1; x++) {
for (int y = 1; y < welt.length - 1; y++) {
if (Math.random() > 0.4) {
welt[x][y].setText("X");
}
else{
welt[x][y].setText(" ");
}
}
}
return welt;
}`
it's returning a NullPointer Exception.
下面的代码唯一做的就是初始化一个 two-dimensional
数组,它不会填充 two-dimensional
数组,因此会出现 NullPointerException
。
Label[][] welt = new Label[DIM1][DIM2];
基本上你不能这样称呼:
welt[x][y].setText("X");
不使用对象引用填充 two-dimensional
数组。
要解决这个问题,首先填充二维数组,如下所示:
Label[][] welt = new Label[DIM1][DIM2];
for(int i = 0; i < DIM1; i++){
for(int j = 0; j < DIM2; j++){
welt[i][j] = new Label();
}
}
然后您可以继续手头的当前任务。
所以现在你的代码变成这样:
public static Label[][] initWelt() {
Label[][] welt = new Label[DIM1][DIM2];
for(int i = 0; i < DIM1; i++){ //populate the array
for(int j = 0; j < DIM2; j++){
welt[i][j] = new Label();
}
}
for (int x = 0; x < DIM1; x++) {
for (int y = 0; y < DIM2; y++) {
if (Math.random() > 0.4) {
welt[x][y].setText("X");
}
else{
welt[x][y].setText(" ");
}
}
}
return welt;
}
注意 - 我个人认为重构当前方法并在不同的方法中插入填充 two-dimensional
数组的代码会更好。