2017-02-04 16 views
1
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); 

    } 

enter image description hereJavaFX TextFlow игнорируя присвоенный цвет и размер

результирующий текст поток не завернуть и не имеет фона цвет фона. t3 часть текста также не отображается курсивом. Я попытался найти ответы, но ничего не нашел. любая помощь будет принята с благодарностью.

EDIT: Я забыл упомянуть, что я использую плагин для мобильных телефонов gluon, чтобы создать приложение для Android с помощью javaFx.

ответ

2

Gluon's View extends от BorderPane, поэтому вы должны добавить узел 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); 

} 

textFlow

+0

Это сработало, спасибо. Я не знал, что это расширение BorderPane, я предполагал, что он расширен Pane (должен был проверить). – Jonathan