Я пытаюсь сделать java игру Судоку.Я не могу выровнять свои входные прямоугольники Судоку.Они смещены из-за кнопок в нижней части платы ввода.Как я могу выровнять прямоугольники как мои expected.jpg
в моем Main.java
.Я хочу сделать свои Buttons
и Input Rectangles
только через файл Main.java
.Если невозможно выполнить выравнивание, хотя Main.java
, пожалуйста, дайте мне знать.Спасибо
expected.jpg
:
what_i_get.jpg
:
Main.java
:
package application;
import java.util.*;
import javafx.scene.shape.Rectangle;
import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.stage.Stage;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.StackPane;
public class Main extends Application {
int[][] original_map;
StackPane[][] screen_buttons = new StackPane[10][10];
@Override
public void start(Stage primaryStage) {
try {
BorderPane root = new BorderPane();
Scene scene = new Scene(root,600,700);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
GridPane root = new GridPane();
root.setPadding(new Insets(10));
root.setHgap(10);
root.setVgap(10);
Scene scene = new Scene(root, 700, 700);
primaryStage.setScene(scene);
// USING SUDOKU.java to build the Sudoku Game
Sudoku map = new Sudoku();
// STORING the sudoku game in the 2x2 array
this.original_map = map.make_game();
for (int y=0;y<9;y++) {
for (int x=0;x<9;x++) {
screen_buttons[y][x] = new StackPane();
Rectangle rec = new Rectangle(30,30);
rec.setFill(javafx.scene.paint.Color.WHITE);
rec.setStyle("-fx-arc-height: 10; -fx-arc-width: 10;");
Label label = new Label(Integer.toString(this.original_map[y][x]));
screen_buttons[y][x].getChildren().addAll(rec, label);
root.add(screen_buttons[y][x], x, y);
}
}
Button[] function_buttons = new Button[4];
String[] function_id = {"Hint", "Clear", "Pause", "Check"};
int pos = 0;
for (Button b : function_buttons) {
if (function_id[pos] == "Hint") {
b = new Button(function_id[pos]);
root.add(b, 1, pos+10);
} else if (function_id[pos] == "Clear"){
b = new Button(function_id[pos]);
root.add(b, 1, pos+10);
} else if (function_id[pos] == "Pause"){
b = new Button(function_id[pos]);
root.add(b, 1, pos+10);
} else {
b = new Button(function_id[pos]);
root.add(b, 6, 11);
}
b.setStyle("-fx-pref-width: 100px; -fx-pref-height: 50px;");
pos++;
}
Button[] click_buttons = new Button[9];
pos = 1;
for (int y=10;y<=12;y++) {
for (int x=2;x<=4;x++) {
click_buttons[pos-1] = new Button(Integer.toString(pos));
root.add(click_buttons[pos-1], x, y);
click_buttons[pos-1].setStyle("-fx-pref-width: 50px; -fx-pref-height: 50px;");
pos++;
}
}
}
public static void main(String[] args) {
launch(args);
}
}