更新!
我从以下答案中尝试了这段代码:
package sample;
import javafx.application.Application;
import javafx.geometry.HPos;
import javafx.geometry.VPos;
import javafx.scene.Scene;
import javafx.scene.control.Control;
import javafx.scene.control.Label;
import javafx.scene.layout.ColumnConstraints;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Priority;
import javafx.scene.layout.RowConstraints;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
GridPane root = new GridPane();
final int size = 10 ;
for (int row = 0; row < size; row++) {
for (int col = 0; col <= size; col ++) {
StackPane square = new StackPane();
if (col == 0) {
Label label = new Label(String.valueOf(row + 1));
square.getChildren().add(label);
}
else {
String color;
if ((row + col) % 2 == 0) {
color = "white";
}
else {
color = "black";
}
square.setStyle("-fx-background-color: "+color+";");
}
root.add(square, col, row);
}
}
StackPane square = new StackPane();
if(size==2) {
Label label = new Label("A");
square.getChildren().add(label);
root.add(square, 1, 2);
square = new StackPane();
label = new Label("B");
square.getChildren().add(label);
root.add(square, 2, 2);
}
if(size==4) {
Label label = new Label("A");
square.getChildren().add(label);
root.add(square, 1, 4);
square = new StackPane();
label = new Label("B");
square.getChildren().add(label);
root.add(square, 2, 4);
square = new StackPane();
label = new Label("C");
square.getChildren().add(label);
root.add(square, 3, 4);
square = new StackPane();
label = new Label("D");
square.getChildren().add(label);
root.add(square, 4, 4);
}
if(size==6){
Label label = new Label("A");
square.getChildren().add(label);
root.add(square, 1, 6);
square = new StackPane();
label = new Label("B");
square.getChildren().add(label);
root.add(square, 2, 6);
square = new StackPane();
label = new Label("C");
square.getChildren().add(label);
root.add(square, 3, 6);
square = new StackPane();
label = new Label("D");
square.getChildren().add(label);
root.add(square, 4, 6);
square = new StackPane();
label = new Label("E");
square.getChildren().add(label);
root.add(square, 5, 6);
square = new StackPane();
label = new Label("F");
square.getChildren().add(label);
root.add(square, 6, 6);
}
if(size==8){
Label label = new Label("A");
square.getChildren().add(label);
root.add(square, 1, 8);
square = new StackPane();
label = new Label("B");
square.getChildren().add(label);
root.add(square, 2, 8);
square = new StackPane();
label = new Label("C");
square.getChildren().add(label);
root.add(square, 3, 8);
square = new StackPane();
label = new Label("D");
square.getChildren().add(label);
root.add(square, 4, 8);
square = new StackPane();
label = new Label("E");
square.getChildren().add(label);
root.add(square, 5, 8);
square = new StackPane();
label = new Label("F");
square.getChildren().add(label);
root.add(square, 6, 8);
square = new StackPane();
label = new Label("G");
square.getChildren().add(label);
root.add(square, 7, 8);
square = new StackPane();
label = new Label("H");
square.getChildren().add(label);
root.add(square, 8, 8);
}
if(size==10){
Label label = new Label("A");
square.getChildren().add(label);
root.add(square, 1, 10);
square = new StackPane();
label = new Label("B");
square.getChildren().add(label);
root.add(square, 2, 10);
square = new StackPane();
label = new Label("C");
square.getChildren().add(label);
root.add(square, 3, 10);
square = new StackPane();
label = new Label("D");
square.getChildren().add(label);
root.add(square, 4, 10);
square = new StackPane();
label = new Label("E");
square.getChildren().add(label);
root.add(square, 5, 10);
square = new StackPane();
label = new Label("F");
square.getChildren().add(label);
root.add(square, 6, 10);
square = new StackPane();
label = new Label("G");
square.getChildren().add(label);
root.add(square, 7, 10);
square = new StackPane();
label = new Label("H");
square.getChildren().add(label);
root.add(square, 8, 10);
square = new StackPane();
label = new Label("I");
square.getChildren().add(label);
root.add(square, 9, 10);
square = new StackPane();
label = new Label("J");
square.getChildren().add(label);
root.add(square, 10, 10);
}
for (int i = 0; i <= size; i++) {
root.getRowConstraints().add(new RowConstraints(5, Control.USE_COMPUTED_SIZE, Double.POSITIVE_INFINITY, Priority.ALWAYS, VPos.CENTER, true));
root.getColumnConstraints().add(new ColumnConstraints(5, Control.USE_COMPUTED_SIZE, Double.POSITIVE_INFINITY, Priority.ALWAYS, HPos.CENTER, true));
}
primaryStage.setScene(new Scene(root, 450, 400));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
它正在工作,但这是一个好方法吗?