javafx vbox 居中_在JavaFX中设置标签和文本字段对齐

我意识到这是一个非常基本的问题,但我只是开始专门学习GUI和JavaFX . 我有一个标签列表及其相应的文本输入字段和一个计算结果的按钮 . 我想将它们全部对齐:

标签..........文本字段

标签..........文本字段

标签..........文本字段

标签..........文本字段

.........按钮..........

居中对齐在窗格本身上 . 我已尝试使用VBox以及HBox,但它们提供相同的输出 . 我甚至尝试过具有不同值的setPadding(0,0,0,0),但我没有找到类似的问题(没有回答我的问题),甚至已经去了https://docs.oracle.com/javase/8/javafx/api/javafx/scene/layout/FlowPane.html但无济于事 . 我意识到计算按钮只会添加值,但我还没有那么远,我想我知道该怎么做才能让它做我想做的事,只是在GUI布局上遇到了麻烦 . 任何帮助,将不胜感激 . 下面是我玩了几个小时后到目前为止的代码:

package javafxfincalc;

import javafx.application.Application;

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.FlowPane;

import javafx.scene.layout.HBox; // may not need

import javafx.scene.layout.VBox;

import javafx.stage.Stage;

import javafx.geometry.Insets;

import javafx.geometry.Orientation;

// a lot of classes must be imported from Java FX to make this all work correctly

public class JavaFXFinCalc extends Application {

// all applications will be a child class of Application when made with Java FX

public static void main(String[] args) {

Application.launch(args);

// this allows the program to start

}@Override

public void start(Stage primaryStage) throws Exception {

// this will use a standard exception handler

FlowPane pane = new FlowPane(Orientation.VERTICAL);

pane.setHgap(5);

pane.setAlignment(Pos.CENTER);

pane.setPadding(new Insets(0,0,0,0)); // set top, right, bottom, left

// this allows input fields to be placed in the window

TextField tf1 = new TextField("00.00");

TextField tf2 = new TextField("0");

TextField tf3 = new TextField("0.00%");

TextField my_result = new TextField("You cannot type here");

// these are the individual fields for input, you can set the default text

my_result.setEditable(false);

// keeps user from changing this text field

tf1.setPrefColumnCount(14);

tf2.setPrefColumnCount(14);

tf3.setPrefColumnCount(14);

my_result.setPrefColumnCount(14);

// this sets the number of spaces in the text fields

Label l1 = new Label("Money used in investment: ");

Label l2 = new Label("Years: ");

Label l3 = new Label("Annual Interest Rate: ");

Label l4 = new Label("Final Financial Worth: ");

// these labels are set and used before the text fields as show below

pane.getChildren().addAll(l1, tf1, l2, tf2, l3, tf3, l4, my_result);

// call on the labels and text fields to be placed into the window

VBox vBox = new VBox();

Button calc_button = new Button("Calculate it!");

// create a box to put the button in and name the button

vBox.setAlignment(Pos.CENTER);

vBox.getChildren().addAll(calc_button);

BorderPane borderPane = new BorderPane();

borderPane.setCenter(pane);

borderPane.setBottom(vBox);

BorderPane.setAlignment(vBox,Pos.CENTER);

Scene scene = new Scene(borderPane, 500, 500);

primaryStage.setTitle("Financial Calculator");

primaryStage.setScene(scene);

primaryStage.show();

calc_button.setOnAction(e -> {

my_result.setText(Double.parseDouble(tf1.getText()) +

Double.parseDouble(tf2.getText()) + "");

});

}}


版权声明:本文为weixin_33760049原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。