【问题标题】:Creating a large body of text with different styles - JavaFX FXML创建具有不同样式的大量文本 - JavaFX FXML
【发布时间】:2015-05-01 02:36:36
【问题描述】:

在我的 JavaFx 应用程序的 fxml 类中,我想使用最少的组件添加大量文本(而不是每行添加多个标签)。我还想在同一个组件中创建不同样式的文本。我应该使用什么组件(例如 TextArea)以及如何在其中创建多个样式(使用 css)。

【问题讨论】:

    标签: java javafx javafx-2 javafx-8 fxml


    【解决方案1】:

    使用TextFlow 并将Text 添加到其中。您可以在单个 Text 组件上使用 css 为它们设置不同样式的样式。

    完整示例:

    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.text.Text;
    import javafx.scene.text.TextFlow;
    import javafx.stage.Stage;
    
    public class TextFlowExample extends Application {
        @Override
        public void start(Stage primaryStage) throws Exception {
            Text text1 = new Text("First Text\n");
            text1.setStyle("-fx-font-size: 20; -fx-fill: darkred;");
            Text text2 = new Text("\nSecond Text");
            text2.setStyle("-fx-font-size: 30; -fx-fill: goldenrod;");
            TextFlow textFlow = new TextFlow(text1, text2);
            primaryStage.setScene(new Scene(textFlow, 200, 200));
            primaryStage.show();
        }
    
        public static void main(String[] args) {
            launch(args);
        }
    }
    

    输出

    等效的 FXML

    <?xml version="1.0" encoding="UTF-8"?>
    
    <?import javafx.scene.layout.*?>
    <?import java.lang.*?>
    <?import javafx.scene.text.*?>
    
    
    <TextFlow lineSpacing="10.0" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" textAlignment="CENTER" xmlns="http://javafx.com/javafx/8.0.40" xmlns:fx="http://javafx.com/fxml/1">
       <children>
          <Text strokeType="OUTSIDE" strokeWidth="0.0" style="-fx-font-size: 20; -fx-fill: darkred;" text="&#10;&#10;First Text" />
          <Text strokeType="OUTSIDE" strokeWidth="0.0" style="-fx-font-size: 30; -fx-fill: goldenrod;" text="&#10;&#10;Second Text" />
       </children>
    </TextFlow>
    

    【讨论】:

    • 我发现这是一个关于 TextFlow 的非常有用的教程 - wiki.openjdk.java.net/display/OpenJFX/Rich+Text+API+Samples
    • 但是“-fx-text-fill: color;”和“-fx-fill:颜色;”没有改变文本颜色
    • 为了更清楚,我添加了一个示例:)
    • 谢谢,但由于某种原因,换行符 (\n) 不起作用。它只是附加“\n”
    • 我猜你正在 fxml 中尝试它。我还添加了一个 FXML 示例。
    猜你喜欢
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多