2015-10-14 2 views
1

Я хотел бы сделать одно конкретное слово в своей курсивом курсивом, но я не могу найти какие-либо решения, ив посмотрел повсюду и попробовал так много разных способов.Сделать конкретное слово italic в ярлыке javafx

Label reference = new Label(lastNameText + ", " + firstNameText + ". (" + yearText + "). " 
        + titleOfArticleText + ". " + titleOfJournalText + ", " 
        + volumeText + ", " + pageNumbersText + ". " + doiText); 

фоновая информация - я хочу «titleOfJournalText», чтобы быть наклонным, а остальное просто, они все строки КСТАТИ, которые где когда-то в своих TextFields

ответ

0

Стандартный текст Этикетка может иметь только один стиль для данной метки.

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

Вы по-прежнему можете поместить TextFlow в ярлык, если хотите, указав TextFlow как графику метки. Обратите внимание, что когда вы это делаете, встроенная функция eliding (где текст меток усекается до точек, если места для отображения метки не хватает), Label не будет работать с TextFlow.

Вот небольшая примерная программа, которая ссылается на теорию специальной теории относительности Эйнштейна.

reference

import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.control.Label; 
import javafx.scene.text.*; 
import javafx.stage.Stage; 

public class StyledLabel extends Application { 

    public static final Font ITALIC_FONT = 
      Font.font(
        "Serif", 
        FontPosture.ITALIC, 
        Font.getDefault().getSize() 
      ); 

    @Override 
    public void start(final Stage stage) throws Exception { 
     Text lastNameText = new Text("Einstein"); 
     Text firstNameText = new Text("Albert"); 
     Text yearText = new Text("1905"); 
     Text titleOfArticleText = new Text("Zur Elektrodynamik bewegter Körper"); 
     Text titleOfJournalText = new Text("Annalen der Physik"); 
     titleOfJournalText.setFont(ITALIC_FONT); 
     Text volumeText = new Text("17"); 
     Text pageNumbersText = new Text("891-921"); 
     Text doiText = new Text("10.1002/andp.19053221004"); 

     Label reference = new Label(
       null, 
       new TextFlow(
         lastNameText, new Text(", "), 
         firstNameText, new Text(". ("), 
         yearText, new Text("). "), 
         titleOfArticleText, new Text(". "), 
         titleOfJournalText, new Text(", "), 
         volumeText, new Text(", "), 
         pageNumbersText, new Text(". "), 
         doiText 
       ) 
     ); 

     stage.setScene(new Scene(reference)); 
     stage.show(); 
    } 

    public static void main(String[] args) throws Exception { 
     launch(args); 
    } 
} 
+0

Thankyou очень много, потратили часы, пытаясь это сделать одну простую вещь – RhysBuddy