Я попытался создать простую сетку, которая просила бы пользователя ввести два числа. По какой-то причине элементы просто ходили повсюду. Я почти уверен, что правильно установил ограничения.
Это мой класс настроек.
public class Settings {
public static void display() {
GridPane layout = new GridPane();
layout.setPadding(new Insets(10));
layout.setVgap(8);
layout.setHgap(10);
Scene scene = new Scene(layout, 600, 400);
//Title label
Label label = new Label("Settings");
GridPane.setConstraints(label, 1, 0);
//Minutes label
Label minutesLabel = new Label("Minutes:");
GridPane.setConstraints(minutesLabel, 0, 1);
//Minutes input
TextField minutesInput = new TextField();
minutesInput.setPromptText("minutes");
GridPane.setConstraints(minutesInput, 1, 1);
//Seconds label
Label secondsLabel = new Label("Seconds:");
GridPane.setConstraints(secondsLabel, 0, 2);
//Seconds input
TextField secondsInput = new TextField();
secondsInput.setPromptText("seconds");
GridPane.setConstraints(secondsInput, 1, 2);
//Ok button
Button okButton = new Button("Ok");
okButton.setOnAction(e -> {
try {
int minutes = Integer.parseInt(minutesInput.getText());
int seconds = Integer.parseInt(secondsInput.getText());
if(minutes > 59) minutes = 59;
else if(minutes < 1) minutes = 1;
if(seconds > 59) seconds = 59;
else if(seconds < 1) seconds = 1;
Main.updateMinsAndSecs(minutes, seconds);
Main.setSceneMain();
}catch(NumberFormatException numberFormatException) {
label.setText("Please enter valid number(s)");
}catch(FileNotFoundException fileNotFoundException) {
fileNotFoundException.printStackTrace();
}
});
okButton.setStyle("-fx-background-radius: 0;");
GridPane.setConstraints(secondsInput, 0, 3);
//Cancel button
Button cancelButton = new Button("Cancel");
cancelButton.setOnAction(e -> {
Main.setSceneMain();
});
cancelButton.setStyle("-fx-background-radius: 0;");
GridPane.setConstraints(secondsInput, 1, 3);
//Apply button
Button applyButton = new Button("Apply");
applyButton.setOnAction(e -> {
try {
int minutes = Integer.parseInt(minutesInput.getText());
int seconds = Integer.parseInt(secondsInput.getText());
if(minutes > 59) minutes = 59;
else if(minutes < 1) minutes = 1;
if(seconds > 59) seconds = 59;
else if(seconds < 1) seconds = 1;
Main.updateMinsAndSecs(minutes, seconds);
}catch(NumberFormatException numberFormatException) {
label.setText("Please enter valid number(s)");
}catch(FileNotFoundException fileNotFoundException) {
fileNotFoundException.printStackTrace();
}
});
applyButton.setStyle("-fx-background-radius: 0;");
GridPane.setConstraints(secondsInput, 2, 3);
layout.getChildren().addAll(label, minutesLabel, minutesInput, secondsLabel, secondsInput, okButton, cancelButton, applyButton);
Main.window.setScene(scene);
Main.window.setTitle("Settings");
}
}
Вот как это оказалось.
скриншот
Я бы хотел, чтобы решение не использовало f xml.
Stackoverflow говорит, что мой пост - это в основном код, и мне нужно больше деталей, поэтому я также скажу, что у меня есть использовал Gridpane для создания простого экрана входа в систему, и это было довольно хорошо. Код был в основном таким же, за исключением позиционирования и содержимого.