Я делаю текстовую игру с графическим интерфейсом. Я использую Javafx. Я пытаюсь выстроить элементы, используя сетки. Я пытаюсь сделать что-то вроде этого: example.Структура сетки Javafx, оставляющая большие пробелы
Вот мой код, и что это выглядит на данный момент
import javafx.application.Application;
import static javafx.application.Application.launch;
import javafx.geometry.Insets;
import javafx.geometry.VPos;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.control.TextArea;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
public class test extends Application {
Stage window;
ListView<String> listView;
TextArea descArea = new TextArea();
Label healthLabel = new Label("Health:");
Label manaLabel = new Label("Mana:");
Label healthDisplay = new Label("100/100");
Label manaDisplay = new Label("100/100");
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
window = primaryStage;
window.setTitle("Game");
GridPane grid = new GridPane();
grid.setPadding(new Insets(10, 10, 10, 10));
grid.setVgap(10);
grid.setHgap(10);
descArea.setPrefWidth(750);
descArea.setPrefHeight(450);
descArea.setWrapText(true);
GridPane.setConstraints(descArea, 0, 0);
GridPane.setConstraints(healthLabel, 1, 0);
GridPane.setValignment(healthLabel, VPos.TOP);
GridPane.setConstraints(healthDisplay, 2, 0);
GridPane.setValignment(healthDisplay, VPos.TOP);
GridPane.setConstraints(manaLabel, 1, 1);
GridPane.setValignment(manaLabel, VPos.TOP);
GridPane.setConstraints(manaDisplay, 2, 1);
GridPane.setValignment(manaDisplay, VPos.TOP);
listView = new ListView<>();
listView.getItems().addAll("Action 1", "Action 2", "Action 3", "Action 4");
listView.setPrefWidth(260);
listView.setPrefHeight(150);
GridPane.setValignment(listView, VPos.BASELINE);
GridPane.setConstraints(listView, 0, 2);
grid.getChildren().addAll(descArea, healthLabel, healthDisplay, manaLabel, manaDisplay, listView);
Scene scene = new Scene(grid, 950, 750);
window.setScene(scene);
window.show();
}
и он показывает, как этот example2 Я пытаюсь переместить ману под этикеткой здоровья и сделать окно списка меньше , Является ли сетка правильным способом для этого или есть лучший способ?
Благодаря
Небольшая заметка о том, что 'ListView' в настоящее время отображается как более широкий, чем 260 пикселей, поскольку он заполняет всю его ячейку. Это можно решить, установив максимальную ширину 'ListView'. –
С помощью ответа James_D для descArea и Jonatan Stenbacka для ListView оба работали, спасибо! – jprogrammer
Обновлено с помощью нескольких различных решений для списка. Спасибо @JonatanStenbacka за это. –