• Home
    • View
    • Login
    This page
    • Normal
    • Export PDF
    • Export Word
    • Attachments
    • Page Information

    Loading...
  1. Dashboard
  2. OpenJFX
  3. Main
  4. Discussions
  5. Rich Text
  6. Rich Text API Samples

Rich Text API Samples

  • Created by J. Duke, last modified by Brian Beck on Jan 18, 2013

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

@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

@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();
}
<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>
.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

@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();
}
<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>
.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

@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

@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

@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:

Overview
Content Tools
ThemeBuilder
  • No labels

Terms of Use
• License: GPLv2
• Privacy • Trademarks • Contact Us

Powered by a free Atlassian Confluence Open Source Project License granted to https://www.atlassian.com/software/views/opensource-community-additional-license-offer. Evaluate Confluence today.

  • Kolekti ThemeBuilder Powered by Atlassian Confluence 8.5.23
  • Kolekti ThemeBuilder printed.by.atlassian.confluence
  • Report a bug
  • Atlassian News
Atlassian
Kolekti ThemeBuilder EngineAtlassian Confluence
{"serverDuration": 258, "requestCorrelationId": "00052c81c8fa4137"}