Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0

Intro

This page host samples of the Rich Text API in use along with the rendering result.
Visit Rich Text API Details for some background information on the API.

Sample 1 - Simple Hello World

Anchor
sample1
sample1

Code Block
languagejava
themeEclipse
linenumberstrue
@Override
public void start(Stage stage) throws Exception {
    String family = "Helvetica";
    double size = 20;

    TextFlow textFlow = new TextFlow();
    textFlow.setLayoutX(40);
    textFlow.setLayoutY(40);
    Text text1 = new Text("Hello ");
    text1.setFont(Font.font(family, size));
    Text text2 = new Text("Bold");
    text2.setFont(Font.font(family, FontWeight.BOLD, size));
    Text text3 = new Text(" World");
    text3.setFont(Font.font(family, FontPosture.ITALIC, size));
    textFlow.getChildren().addAll(text1, text2, text3);

    Group group = new Group(textFlow);
    Scene scene = new Scene(group, 500, 500, Color.WHITE);
    stage.setTitle("Hello Rich Text");
    stage.setScene(scene);
    stage.show();
}

Result:

Sample 2 - FXML + CSS

Anchor
sample2
sample2

Code Block
languagejava
themeEclipse
linenumberstrue
@Override
public void start(Stage stage) throws Exception {
    stage.setTitle("Hello Rich Text FXML");
    stage.setScene((Scene)FXMLLoader.load(getClass().getResource("hellorichtext.fxml")));
    stage.show();
}
Code Block
languagexml
<Scene width="500" height="500" fill="white" xmlns:fx="http://javafx.com/fxml">
    <stylesheets>
        <URL value="@style1.css"/>
    </stylesheets>

    <Group>
        <TextFlow styleClass="paragraph">
            <Text styleClass="span1">Hello </Text>
            <Text styleClass="span2">Bold</Text>
            <Text styleClass="span3"> World</Text>
        </TextFlow>
    </Group>
</Scene>
Code Block
languagecss
.paragraph {
	-fx-font-family: "Helvetica";
	-fx-font-size: 50px;
}

.span1 {
}

.span2 {
	-fx-fill: red;
	-fx-font-weight: bold;
}

.span3 {
	-fx-fill: green;
	-fx-font-style: italic;
}

Result:

Sample 3 - FXML + CSS + Gradient + Stroke + Effects

Anchor
sample3
sample3

Code Block
languagejava
themeEclipse
linenumberstrue
@Override
public void start(Stage stage) throws Exception {
    stage.setTitle("Hello Rich Text FXML");
    stage.setScene((Scene)FXMLLoader.load(getClass().getResource("fancy.fxml")));
    stage.show();
}
Code Block
languagexml
<Scene width="800" height="500" fill="white" xmlns:fx="http://javafx.com/fxml">
    <stylesheets>
        <URL value="@style2.css"/>
    </stylesheets>
    <Pane fx:id="pane">
         <TextFlow styleClass="paragraph" wrappingWidth="${pane.width}">
            <Text styleClass="span1, fancy1">Hello </Text>
            <Text styleClass="span2, big, fancy2">Bold</Text>
            <Text text=" "/>
            <Text styleClass="span3, fancy3">Effect</Text>
            <Text text=" "/>
            <Text styleClass="underlinefancy">fancy underline</Text>
            <Text text=" "/>
            <Text styleClass="strikeout, fancy2">fancy strikeout</Text>
        </TextFlow>
    </Pane>
</Scene>
Code Block
languagecss
.paragraph {
	-fx-font-family: "Helvetica";
	-fx-font-size: 50px;
}

.span1 {
}

.span2 {
	-fx-fill: red;
	-fx-font-weight: bold;
}

.span3 {
	-fx-fill: green;
	-fx-font-style: italic;
}

.big {
	-fx-font-size: 80px;
	-fx-cursor: hand;
}

.fancy1 {
	-fx-stroke: rgb(255, 0, 0);
	-fx-fill: rgba(255, 0, 0, 0.2);
}

.fancy2 {
	-fx-fill: linear-gradient(from 0% 0% to 100% 100%, repeat, orange 0%, red 50%);
	-fx-stroke: black;
	-fx-stroke-width: 1;
}

.fancy3 {
	-fx-effect: dropshadow(gaussian, gray, 8, 0.5, 8, 8);
}

.underlinefancy {
	-fx-underline: true;
	-fx-fill: transparent;
	-fx-stroke: linear-gradient(from 0% 0% to 100% 100%, repeat, black 0%, blue 50%);
	-fx-stroke-width: 1;
}

.strikeout {
	-fx-strikethrough: true;
}

Result:

Sample 4 - Embedded Objects

Anchor
sample4
sample4

Code Block
languagejava
themeEclipse
linenumberstrue
@Override
public void start(Stage stage) throws Exception {
    String family = "Helvetica";
    double size = 20;

    TextFlow textFlow = new TextFlow();
    textFlow.setLayoutX(0);
    textFlow.setLayoutY(100);
    Text text1 = new Text("Lets have ");
    text1.setFont(Font.font(family, size));
    Text text2 = new Text("embedded objects: ");
    text2.setFont(Font.font(family, FontWeight.BOLD, size));
    Rectangle rect = new Rectangle(80, 60);
    rect.setFill(null);
    rect.setStroke(Color.RED);
    Text text3 = new Text(" then button ");
    Button button = new Button("click me");
    Text text4 = new Text(" finally an image ");
    ImageView image = new ImageView("file:///Users/felipe/Documents/felipe/worker.png");
    Text text5 = new Text(".");
    text5.setFont(Font.font(family, size));

    textFlow.getChildren().addAll(text1, text2, rect, text3, button, text4, image, text5);

    Scene scene = new Scene(textFlow, 800, 500, Color.WHITE);
    textFlow.wrappingWidthProperty().bind(scene.widthProperty());

    stage.setTitle("Hello Rich Text with Embedded Objects");
    stage.setScene(scene);
    stage.show();
}

Result:

Sample 5 - Transforms

Anchor
sample5
sample5

Code Block
languagejava
themeEclipse
linenumberstrue
@Override
public void start(Stage stage) throws Exception {
    String family = "Helvetica";
    double size = 20;

    TextFlow textFlow = new TextFlow();
    textFlow.setTranslateX(30);
    textFlow.setTranslateY(100);
    textFlow.setRotate(45);
    Text text1 = new Text("Hello ");
    text1.setFont(Font.font(family, size));
    Text text2 = new Text("Bold");
    text2.setRotate(-45);
    text2.setFont(Font.font(family, FontWeight.BOLD, size));
    Text text3 = new Text(" World");
    text3.setFont(Font.font(family, FontPosture.ITALIC, size));
    textFlow.getChildren().addAll(text1, text2, text3);

    Group group = new Group(textFlow);
    Scene scene = new Scene(group, 500, 500, Color.WHITE);
    stage.setTitle("Hello Rich Text");
    stage.setScene(scene);
    stage.show();
}

Result:

Sample 6 - Bidi Text

Anchor
sample6
sample6

Code Block
languagejava
themeEclipse
linenumberstrue
@Override
public void start(Stage stage) throws Exception {
    TextFlow textFlow = new TextFlow();
    Font font = new Font("Tahoma", 48);
    textFlow.setTextOrigin(VPos.TOP);
    Text text1 = new Text("He said \u0627\u0644\u0633\u0644\u0627\u0645");
    text1.setFill(Color.RED);
    text1.setFont(font);
    Text text2 = new Text(" \u0639\u0644\u064a\u0643\u0645 to me.");
    text2.setFill(Color.BLUE);
    text2.setFont(font);
    textFlow.getChildren().addAll(text1, text2);

    Group group = new Group(textFlow);
    Scene scene = new Scene(group, 500, 500, Color.WHITE);
    stage.setTitle("Hello Rich Text");
    stage.setScene(scene);
    stage.show();
}

Result: