JavaFX和FXML:在HBox中居中文本

时间:2016-11-20 04:35:22

标签: javafx fxml netbeans-8

我需要一些帮助。你如何将文本集中在HBox中。我正在使用SceneBuilder。我尝试了,但我无法弄明白该怎么做。

以下是FXML的代码。

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.geometry.Insets?>
<?import javafx.geometry.Point3D?>
<?import javafx.scene.control.TableColumn?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.text.Text?>

<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="600.0" prefWidth="1200.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1">
<top>
  <HBox prefHeight="50.0" prefWidth="800.0" BorderPane.alignment="CENTER">
     <children>
        <Text boundsType="LOGICAL_VERTICAL_CENTER" layoutX="600.0" layoutY="600.0" scaleZ="0.0" strokeType="OUTSIDE" strokeWidth="0.0" text="GIANTS  DATABASE" textAlignment="CENTER" textOrigin="CENTER" wrappingWidth="231.7841796875" x="600.0" y="600.0">
           <rotationAxis>
              <Point3D x="1.0" y="1.0" z="1.0" />
           </rotationAxis>
        </Text>
     </children></HBox>
</top>
<right>
  <TableView prefHeight="550.0" prefWidth="577.0" BorderPane.alignment="CENTER">
    <columns>
      <TableColumn minWidth="0.0" prefWidth="72.0" text="Rank" />
      <TableColumn editable="false" minWidth="0.0" prefWidth="206.0" text="Name" />
        <TableColumn editable="false" minWidth="0.0" prefWidth="88.0" text="Position" />
        <TableColumn minWidth="0.0" prefWidth="77.0" text="School" />
        <TableColumn minWidth="0.0" prefWidth="66.0" text="Age" />
        <TableColumn minWidth="0.0" prefWidth="66.0" text="War" />
    </columns>
  </TableView>
</right>
<opaqueInsets>
  <Insets />
</opaqueInsets>
<padding>
  <Insets bottom="3.0" right="3.0" />
</padding>

我想要居中的文字是 GIANTS DATABASE ,在HBox儿童下

以下是javaFX的代码

public class Login extends Application {

@Override
public void start(Stage primaryStage) {

    try {
    Parent root = FXMLLoader.load(getClass().getResource("/giants/LoginF.fxml"));
    Scene scene = new Scene(root);

    primaryStage.setTitle("Giants Database Login");
    primaryStage.setScene(scene);
    primaryStage.show();  
    }
    catch (Exception e) {

    }
}

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    launch(args);
}

}

以下是文字* GIANTS DATABASE 的图片。我希望将文本置于箭头指向的位置**

Here is the image. And where the arrow is, that is where I want to center

1 个答案:

答案 0 :(得分:0)

删除bounds节点上的layoutX/YrotationText设置 - 不需要它们。您要查找的是HBox alignment属性 - 将其设置为Pos.CENTER将在中心垂直和水平布局HBox的子项。如果您想将其保留在左侧,请使用Pos.CENTER_LEFT

您的问题也不清楚您是否希望HBox这么高 - 将prefHeight的{​​{1}}更改为HBox以获得它可能会有所帮助匹配Region.USE_COMPUTED_SIZE音符的大小(加上其中任何一个上设置的任何填充/边距)。