Java FX - TextFlow

学习之前了解知识:

 

先上几张效果图::

 

 

 

代码::(在学习过程中可以根据自己需要注释代码后食用)

package sample;


import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.geometry.Insets;
import javafx.geometry.VPos;
import javafx.scene.Cursor;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.scene.paint.Paint;
import javafx.scene.text.*;
import javafx.stage.Stage;


public class Main extends Application {


    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        AnchorPane an = new AnchorPane();

        Text t1 = new Text("HELLO1 我在学习javafx1换行\n");//换行
        t1.setFont(new Font(30));///设置t1字体大小
//        t1.setStyle("-fx-background-color: crimson");//背景颜色设置不了
//        t1.setStyle("-fx-text-fill: crimson");不起作用,得用下面的方式
        t1.setFill(Paint.valueOf("#FF82ab"));//改变字体颜色
        Text t2 = new Text("HELLO2 我在学习javafx2水平制表\t");//水平制表
        t2.setCursor(Cursor.WAIT);//光标移到文字上改变样式
        t2.setFont(Font.font("Helvetica", FontWeight.BOLD, 40));//便捷设置加粗、字体大小之类的效果,做UI应该懂,写底层的无所谓,百度一大堆
        Text t3 = new Text("HELLO3 我在学习javafx3回车\r");//回车
        t3.setWrappingWidth(300);//包围文字宽度
        Text t4 = new Text("HELLO4 我在学习javafx4反斜杠\\");//反斜杠
        t4.setTextAlignment(TextAlignment.CENTER);//设置对齐方式
        Text t5 = new Text("HELLO5 我在学习javafx5空字符\0");//空字符
        t5.setUnderline(true);//设置下划线
        Text t6 = new Text("HELLO6 我在学习javafx6双引号字符\"");//双引号字符
        t6.setTextOrigin(VPos.CENTER);//设置位置方向(基准线)
        Text t7 = new Text("HELLO7 我在学习javafx7换页\f");//换页
        t7.setLineSpacing(300);///设置上下间距
        TextFlow tf = new TextFlow();//专门处理文本
        tf.getChildren().addAll(t1, t2, t3, t4, t5, t6, t7);
        tf.setStyle("-fx-background-color: #00f3ff");


        Text t8 = new Text("Anchorpane");//
        TextFlow tf2 = new TextFlow();//专门处理文本
        tf.setStyle("-fx-background-color: #9401d2");
        tf2.getChildren().addAll(t8);
        an.getChildren().addAll(tf, tf2);
        an.setStyle("-fx-background-color: #ec9a0b");


        //三个重要方法::内边距、外边距、对齐方式
        tf.setPadding(new Insets(10));///无内边距情况下两个文字会重叠,组件的特性是有就往左上角放(没布局的情况下)
//        stkp.setMargin(b1, new Insets(15));//tf无外边距
        tf.setTextAlignment(TextAlignment.CENTER);//居中

        tf.setLineSpacing(30);//行间距

        primaryStage.widthProperty().addListener(new ChangeListener<Number>() {
            @Override
            public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
                System.out.println("改变宽度");
                System.out.println("an宽度::" + an.getWidth() + "父亲控件给的::" + an.getPrefWidth());
                System.out.println("textfolw宽度::" + tf.getWidth());
            }
        });
        an.widthProperty().addListener(new ChangeListener<Number>() {
            @Override
            public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
                System.out.println("an的宽度改变");
                tf.setPrefWidth(newValue.doubleValue());///不这样设设置会使得缩放窗口时文字看不到,因为tf的宽度未随着窗体大小改变,。
            }
        });

        Scene scene = new Scene(an);


        primaryStage.setScene(scene);
        primaryStage.setTitle("Java FX Lesson20.TextFlow ");
        primaryStage.setWidth(800);
        primaryStage.setHeight(800);
        primaryStage.show();


    }


}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值