JavaFX 文本流忽略分配的背景颜色和大小
JavaFX textflow ignoring assigned background color and size
public BasicView(String name) {
super(name);
Button b = new Button("test test test");
this.getChildren().addAll(b);
width = MobileApplication.getInstance().getScreenWidth();
height = MobileApplication.getInstance().getScreenHeight();
VBox box = new VBox();
box.getChildren().add(b);
setCenter(box);
Text t = new Text(width/4,height/2,"OMG ITS TEXT ON THE SCREEN !!!! TEST TEST TEST TEST");
t.setWrappingWidth(100);
this.getChildren().add(t);
b.setOnAction(e -> this.rotate(t));
TextFlow tf = new TextFlow();
Text t1= new Text("This text is not bold ");
Text t2= new Text(",this part is,");
t2.setStyle("-fx-font-weight: bold");
t2.setFill(Color.RED);
Text t3= new Text("and this part is italic");
t3.setStyle("-fx-font-style: italic");
tf.setPrefSize(30,30);
tf.setMaxWidth(USE_PREF_SIZE);
tf.getChildren().addAll(t1,t2,t3);
tf.setStyle("-fx-background-color: red");
tf.setLayoutX(100);
tf.setLayoutY(100);
this.getChildren().addAll(tf);
}
生成的文本流不换行且没有背景色。文本的 t3 部分也未以斜体显示。我曾尝试寻找答案,但一无所获。任何帮助将不胜感激。
编辑:我忘了说我正在使用 gluon 移动插件,以便使用 javaFx 构建 android 应用程序。
来自 BorderPane
的 Gluon 视图 extends,因此您应该将 textFlow 节点添加到五个可能位置之一(即中心)。
否则您将不得不处理其布局(调用 resizeRelocate
)。
一旦你把它添加到中心,例如,它就会有合适的大小,它会显示背景颜色,它会包裹内容。
至于斜体,Gluon Charm 使用 Roboto fonts,常规、中等和粗体。如果你想要斜体样式,你需要将 Roboto-Italic.ttf
字体添加到你的资源 (/src/main/resources/
),然后加载它:
public BasicView(String name) {
super(name);
Font.loadFont(getClass()
.getResourceAsStream("/Roboto-italic.ttf"), 10);
TextFlow tf = new TextFlow();
Text t1= new Text("This text is not bold ");
Text t2= new Text(", this part is,");
t2.setStyle("-fx-font-weight: bold");
t2.setFill(Color.RED);
Text t3= new Text(" and this part is italic");
t3.setStyle("-fx-font-style: italic");
tf.getChildren().addAll(t1,t2,t3);
tf.setStyle("-fx-background-color: yellow");
setCenter(tf);
}
public BasicView(String name) {
super(name);
Button b = new Button("test test test");
this.getChildren().addAll(b);
width = MobileApplication.getInstance().getScreenWidth();
height = MobileApplication.getInstance().getScreenHeight();
VBox box = new VBox();
box.getChildren().add(b);
setCenter(box);
Text t = new Text(width/4,height/2,"OMG ITS TEXT ON THE SCREEN !!!! TEST TEST TEST TEST");
t.setWrappingWidth(100);
this.getChildren().add(t);
b.setOnAction(e -> this.rotate(t));
TextFlow tf = new TextFlow();
Text t1= new Text("This text is not bold ");
Text t2= new Text(",this part is,");
t2.setStyle("-fx-font-weight: bold");
t2.setFill(Color.RED);
Text t3= new Text("and this part is italic");
t3.setStyle("-fx-font-style: italic");
tf.setPrefSize(30,30);
tf.setMaxWidth(USE_PREF_SIZE);
tf.getChildren().addAll(t1,t2,t3);
tf.setStyle("-fx-background-color: red");
tf.setLayoutX(100);
tf.setLayoutY(100);
this.getChildren().addAll(tf);
}
生成的文本流不换行且没有背景色。文本的 t3 部分也未以斜体显示。我曾尝试寻找答案,但一无所获。任何帮助将不胜感激。
编辑:我忘了说我正在使用 gluon 移动插件,以便使用 javaFx 构建 android 应用程序。
来自 BorderPane
的 Gluon 视图 extends,因此您应该将 textFlow 节点添加到五个可能位置之一(即中心)。
否则您将不得不处理其布局(调用 resizeRelocate
)。
一旦你把它添加到中心,例如,它就会有合适的大小,它会显示背景颜色,它会包裹内容。
至于斜体,Gluon Charm 使用 Roboto fonts,常规、中等和粗体。如果你想要斜体样式,你需要将 Roboto-Italic.ttf
字体添加到你的资源 (/src/main/resources/
),然后加载它:
public BasicView(String name) {
super(name);
Font.loadFont(getClass()
.getResourceAsStream("/Roboto-italic.ttf"), 10);
TextFlow tf = new TextFlow();
Text t1= new Text("This text is not bold ");
Text t2= new Text(", this part is,");
t2.setStyle("-fx-font-weight: bold");
t2.setFill(Color.RED);
Text t3= new Text(" and this part is italic");
t3.setStyle("-fx-font-style: italic");
tf.getChildren().addAll(t1,t2,t3);
tf.setStyle("-fx-background-color: yellow");
setCenter(tf);
}