【发布时间】:2021-01-07 12:51:26
【问题描述】:
我们正在尝试制作一组按钮,当它们被点击时会消失。问题是,无论我们点击哪个按钮,都会出现越界错误。如果我们单击 button(1,3),我们希望该按钮消失(通过使用 remove 功能)。
这是我们当前的代码:
public class Main extends Application {
public static void main(String[] args) {
System.out.println("Start of JavaFX");
launch(args);
System.out.println("End of JavaFX");
}
//--module-path "/Users/jonathan/Documents/JavaFX/javafx-sdk-15.0.1/lib" --add-modules
javafx.controls,javafx.fxml
private int width = 10;
private int height = 10;
private int i;
private int j;
private StackPane[][] stk = new StackPane[width][height];
Button[][] button = new Button[width][height];
Label[][] lbl = new Label[width][height];
@Override public void start(Stage primaryStage) {
GridPane gridPane = new GridPane();
for (i = 0 ; i <= width-1 ; i++) {
for (j = 0 ; j <= height-1 ; j++) {
//System.out.println(i + "," + j);
button[i][j] = new Button();
lbl[i][j] = new Label();
button[i][j].setText("B");
lbl[i][j].setText("X");
stk[i][j] = new StackPane(lbl[i][j],button[i][j]);
gridPane.add(stk[i][j], i, j, 1, 1);
button[i][j].setOnAction(e -> buttonClick(i,j));
}
}
Scene scene = new Scene(gridPane);
primaryStage.setScene(scene);
primaryStage.show();
}
public void buttonClick(int i, int j) {
System.out.println(i + "," + j);
stk[i][j].getChildren().remove(button[i][j]);
}
}
【问题讨论】:
-
这实际上是一个可重现的例子,我很好地重现了它并且能够找到解决方案(我也在下面发布)!忽略彼得上面的评论。
-
@jetspiking 看起来不像......但仔细观察,可能是格式问题;)无论如何,我希望 OP 付出更多努力来使代码可读。跨度>