学习之前了解知识:
先上几张效果图::
代码::(在学习过程中可以根据自己需要注释代码后食用)
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();
}
}