我练习了实现扫雷的javafx应用程序。我摘录了代码以找出问题所在。在代码中,我读入了一个javafx.scene.control.Button类型的对象数组。在另一个类中,我读出了这个数组。就像在每个javafx应用程序中一样,整个应用程序类汇集在一起。编译工作。我运行Programm时得到nullPointerException。这是我的问题。可能Array不包含任何对象。顺便说一句,我使用分离的类,因为练习包含在模型 - 视图 - 控制器Designpattern中。
import javafx.scene.control.Button;
public class GameButton extends Button {
public static GameButton[][] buttons = new GameButton[3][4];
public GameButton() {
for (int x = 0; x < buttons.length; x++) {
for (int y = 0; y < buttons[x].length; y++) {
buttons[x][y] = new GameButton(); //Read in the array
}
}
}
}
import javafx.scene.layout.GridPane;
public class View extends GridPane {
public View() {
for (int x = 0; x<GameButton.buttons.length; x++) {
for (int y = 0; y<GameButton.buttons[x].length; y++) {
this.add(GameButton.buttons[x][y], x, y);// Read out the array
}
}
}
}
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
public class Main extends Application {
public void start(Stage stage) {
View view = new View();
Scene scene = new Scene(view);
stage.setTitle("Minesweeper");
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
答案 0 :(得分:0)
GameButton
数组中的所有按钮均为空,您将它们添加到视图中。它们将在那里使用,最终导致NPE。
解决方案:不要让数组静止,而是实例化你的类。
import javafx.scene.layout.GridPane;
public class View extends GridPane {
public View() {
GameButton gb = new GameButton();
for (int x = 0; x < gb.buttons.length; x++) {
for (int y = 0; y < gb.buttons[x].length; y++) {
this.add(gb.buttons[x][y], x, y);// Read out the array
}
}
}
}
我不确定你想做什么
import javafx.scene.control.Button;
public class GameButton extends Button {
public Button[][] buttons = new Button[3][4];
public GameButton() {
for (int x = 0; x < buttons.length; x++) {
for (int y = 0; y < buttons[x].length; y++) {
buttons[x][y] = new Button(); //Read in the array
}
}
}
}