2016-10-19 4 views
-1

im пытается создать окно с javafx и напечатать мой вводный ввод в это окно в разных цветах.Печать ввода, окрашенного в окно

Вот что я пытаюсь сделать в JavaFx, чтобы добавить строку после того, как окно есть.

public void start(Stage stage) { 
    stage.setTitle("Java chat client"); 
    tf = new TextFlow(); 
    Text t; 
    t=new Text("tetd\n"); 
    t.setFill(Color.GREEN); 
    tf.getChildren().addAll(t); 
    t=new Text("blblblb"); 
    tf.getChildren().add(t); 
    group = new Group(tf); 
    Scene scene = new Scene(group, 650, 150, Color.WHITE); 
    stage.setScene(scene); 
    stage.show(); 
} 

и это то, что я пытаюсь сделать в моей основной, чтобы добавить новый текст:

public static void main(String[] args) { 
    Application.launch(Client.class); 
    Text t; 
    t=new Text("tetd\n"); 
    t.setFill(Color.RED); 
    tf.getChildren().add(t); 
    group.getChildren().add(tf); 
} 

, когда я пытаюсь это я получаю

java.lang.IllegalArgumentException: Дети : дублированные дети добавлены: parent = Group @ 1706bae [styleClass = root]

любые советы как я могу добавить текст?

Спасибо за помощь

+0

Возможно, так же, как в Swing: с использованием компонента, поддерживающего HTML. В FX это называется 'WebView' –

+0

Вы можете либо HTML-форматировать текст и использовать' WebView', как предлагает @TimothyTruckle, либо использовать ['TextFlow'] (http://docs.oracle.com/javase/ 8/javafx/api/javafx/scene/text/TextFlow.html) и поместить в него элементы «Текст». Каждый «Текст» может иметь на нем другой «fill», чтобы изменить цвет. –

+0

Как обновить сцену, чтобы добавить новую линию связи? @James_D – The8Monkey

ответ

-1

отличный способ идти об этом, а также отличная возможность обучения является использование CSS для этого. Ниже приведен пример, который изменит цвет текста TextArea.

.text-area{ 
    -fx-text-fill: green; 
} 

Тогда вы можете добавить эту таблицу стилей к своему узлу (в этом случае текстовую область), как это.

@FXML TextArea myTextArea; 

@Override 
public void initialize(){ 
    myTextArea.getStyleSheets.add("Path to your style sheet (i.e bin/textColor.css")); 
} 

Если вы уже знакомы с javaFX и инициализируемым интерфейсом, это будет иметь для вас прекрасный смысл. В любом другом случае я настоятельно рекомендую вам узнать об этих функциях. Что касается только строки, вы можете просто включить подчеркивание и задать текст в виде пустого пространства. Надеюсь это поможет.

+0

Но так у меня есть только зеленый текст, я могу добавить несколько оттенков в текстовое поле? – The8Monkey

+0

В javaFX да это возможно. – paul

+0

Как? Через css или какие классы мне нужно использовать? И можете ли вы дать миру небольшое выражение? Спасибо. – The8Monkey

Смежные вопросы