无论我编写什么代码,GUI中的按钮总是以左上角结尾

时间:2019-04-23 18:06:35

标签: java user-interface button javafx

我的另一个GUI遇到了这个问题,无论做什么我都无法解决。遵循我书中的一个示例,但最终仍然忽略了对齐方式。

无论我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 个答案:

答案 0 :(得分:1)

问题是您是在设置场景的大小而不是窗格的大小,因此,由于窗格的大小不一样,因此不会填充整个场景,这就是为什么在边框上添加边框不会改变位置的原因这样的窗格

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

更改窗格大小后,您将看到窗格的大小和位置,这不再是问题

总的来说,对齐不会被忽略,因为窗格很小,您看不到更改