Кнопки в графическом интерфейсе всегда оказываются в верхнем левом положении независимо от того, что я кодирую - PullRequest
0 голосов
/ 23 апреля 2019

У меня была эта проблема с другим моим графическим интерфейсом, и я не могу ее исправить, что бы я ни делал. Последовал примеру в моей книге и все равно в итоге проигнорировал выравнивание.

Независимо от того, что setAlignment я делаю для Pos, мои кнопки всегда оказываются в верхнем левом углу моего GUI.

Попытка реорганизации кода и различных позиций для setAlignment

package application;


import javafx.scene.image.*;
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.Group;
import javafx.scene.paint.Color;
import javafx.scene.shape.*;
import javafx.event.ActionEvent;
import javafx.geometry.Pos;
import javafx.scene.control.Button;
import javafx.scene.layout.FlowPane;



public class Game extends Application {
    Rectangle rect = new Rectangle(0, 800, 800, 100);


    public void start(Stage primaryStage) {

        rect.setFill(Color.BLACK);

        Button pushA = new Button("Fight");
        pushA.setOnAction(this::processButtonPressFight);

        Button pushB = new Button("Block");
        pushB.setOnAction(this::processButtonPressFight);

        Button pushC = new Button("Bag");
        pushC.setOnAction(this::processButtonPressFight);

        FlowPane pane = new FlowPane(pushA, pushB, pushC);
        pane.setAlignment(Pos.BASELINE_LEFT);
        pane.setHgap(100);

        Group root = new Group(rect, pane);
        Scene scene = new Scene(root, 800, 900);

        primaryStage.setTitle("Dungeon Crawler Battle!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
    public void processButtonPressFight(ActionEvent event) {

    }
    public static void main(String[] args) {
        launch(args);
    }
}

Я ожидаю, что мои кнопки будут в базовой линии слева, но получим их в левом верхнем углу.

1 Ответ

1 голос
/ 24 апреля 2019

Ах, проблема в том, что вы устанавливаете размер сцены, а не панели, поэтому, поскольку размер панели не совпадает, она не заполняет всю сцену, поэтому ваши позиции не меняются, если вы добавляете границу к панель вот так

pane.setStyle("-fx-border-color:black; -fx-border-width: 2 2 2 2");

Вы увидите, как мало и где расположена панель, после изменения размера панели, это больше не должно быть проблемой

Подводя итог, можно сказать, что выравнивание не игнорируется, вы просто не видите изменения, потому что панель маленькая

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...