如何在javaFX中垂直填充文本?

时间:2017-11-17 03:11:20

标签: javafx label hbox

enter image description here

我尝试拉伸高度和宽度,但只有宽度可以水平显示文字,而不是垂直显示。

以下是我的尝试。

    Label label5 = new Label("eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee");
    HBox hbox5 = new HBox();
    label5.setMinHeight(Region.USE_COMPUTED_SIZE);
    hbox5.getChildren().add(label5);
    hbox5.setAlignment(Pos.TOP_CENTER);
    hbox5.setMinHeight(Region.USE_COMPUTED_SIZE);

但似乎不起作用。

如果我错过了什么,请告诉我谢谢!

2 个答案:

答案 0 :(得分:1)

你可以wrapText(true)rotate(90.0) Label而不用担心其他人吗?

Label l = new Label("some long text goes here - ");
l.setWrapText(true);
l.setRotate(90.0);

答案 1 :(得分:0)

关键是确保使用Monospaced font

  

代码版本:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.scene.text.Font;
import javafx.stage.Stage;

/**
 *
 * @author blj0011
 */
public class JavaFXApplication42 extends Application {

    @Override
    public void start(Stage primaryStage) {
        StackPane root = new StackPane();

        Label label = new Label("Hello World");
        label.setFont(Font.font("Monospaced"));
        label.setWrapText(true);
        label.setMinWidth(1);
        label.setPrefWidth(1);
        label.setMaxWidth(1);


        root.getChildren().add(label);

        Scene scene = new Scene(root, 300, 250);

        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

enter image description here

  

FXML版本:

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

<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.Pane?>


<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.141" xmlns:fx="http://javafx.com/fxml/1">
   <children>
      <Label layoutX="296.0" layoutY="81.0" prefHeight="198.0" prefWidth="0.0" text="HELLO WORLD" wrapText="true" />
   </children>
</Pane>

enter image description here