标签2D-Array | JavaFX的

时间:2017-03-21 13:07:14

标签: java multidimensional-array javafx labels

我想用Javafx标签填充2D数组,我可以在单击时更改文本。 这是我的实际代码,但它返回了NullPointer异常。

  

块引用

`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;
}`

1 个答案:

答案 0 :(得分:2)

  

它返回一个NullPointer异常。

以下代码唯一做的是初始化mapply数组,它不会填充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; } 数组的代码。