Этот код генерирует изменяемый размер GUI, однако при расширении окна элементы внутри него не подстраиваются под размер окна. Этот код состоит из отдельных классов, верхней строки, средней строки, нижней строки и основного GUI, содержащего эти классы. Я сделал каждый ряд горизонтальным прямоугольником. Верхний и средний ряды содержат кнопки и текстовые поля, а нижний - одно большое текстовое поле. Любая помощь приветствуется. Спасибо.
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.shape.Line;
import javafx.stage.Stage;
private final TopRow tr = new TopRow();
private final CenterRow cr = new CenterRow();
private final BottomRow br = new BottomRow();
@Override
public void start(Stage primaryStage) {
DataBase();
Scene scene = new Scene(new AppGUI(), 900, 350);
scene.getStylesheets().add("zipStyler.css");
primaryStage.setTitle("ZipCode Translation System");
primaryStage.setScene(scene);
primaryStage.show();
primaryStage.setResizable(true);
}
public static void main(String[] args) {
launch(args);
}
private class AppGUI extends BorderPane {
private AppGUI() {
this.setTop(tr);
this.setCenter(cr);
this.setBottom(br);
zToCbtn.setOnAction(e -> CheckZip());
cToZbtn.setOnAction(e -> CheckCityState());
}
}
private class TopRow extends VBox {
public TopRow() {
HBox hbox = new HBox();
hbox.setPadding(new Insets(15, 10, 15, 10));
hbox.setSpacing(15);
hbox.setAlignment(Pos.CENTER);
this.setAlignment(Pos.CENTER);
Line line = new Line();
line.setStrokeWidth(3);
line.setEndX(800.0);
zipText2.setPrefWidth(80);
Label ZipCode = new Label("Zip Code:");
Label City = new Label("City:");
Label State = new Label("State:");
stateText1.setEditable(false);
stateText1.setMouseTransparent(true);
stateText1.setPrefWidth(200);
cityText1.setPrefWidth(200);
cityText1.setEditable(false);
cityText1.setMouseTransparent(true);
hbox.getChildren().addAll(ZipCode, zipText2, zToCbtn, City, cityText1, State, stateText1);
this.getChildren().addAll(hbox, line);
}
}
private class CenterRow extends VBox {
public CenterRow() {
HBox hbox = new HBox();
hbox.setPadding(new Insets(15, 10, 15, 10));
hbox.setSpacing(15);
hbox.setAlignment(Pos.CENTER);
this.setAlignment(Pos.CENTER);
stateText2.setPrefWidth(50);
Line line = new Line();
line.setStrokeWidth(3);
line.setEndX(800.0);
Label City = new Label("City:");
Label State = new Label("State:");
zipf.setMouseTransparent(true);
zipf.setEditable(false);
zipf.setPrefHeight(100);
zipf.setPrefWidth(180);
hbox.getChildren().addAll(City, cityText2, State, stateText2, cToZbtn, zipf);
this.getChildren().addAll(hbox, line);
}
}
private class BottomRow extends VBox {
public BottomRow() {
HBox hbox = new HBox();
hbox.setPadding(new Insets(15, 10, 15, 10));
hbox.setAlignment(Pos.CENTER);
statustf.setEditable(false);
statustf.setMouseTransparent(true);
statustf.setPrefWidth(500);
Label Status = new Label("Status: ");
hbox.getChildren().addAll(Status, statustf);
this.getChildren().add(hbox);
}
}