У меня есть консоль, которая реализована на TextFlow. В ней меняется цвет, в зависимости от типа сообщения (ERROR - red, WARNING - yellow и тд).
Появилась необходимость выделения и копирования сообщений оттуда. Искал способы реализации данной задачи и чаще всего встречал RichTextFX, но мне не понятно его использование. Вот как выглядит моя консоль:
Чем из RichTextFX можно заменить мою реализацию в TextFlow?
И если есть какой-то туториал по RichTextFX кроме того что на GitHub - буду рад его получить!
Насчет другого руководства, кроме указанного на github, я не знаю. Но указанного там достаточно для вашей задачи:
import javafx.application.Application;
import javafx.application.Platform;
import javafx.scene.Scene;
import javafx.stage.Stage;
import org.fxmisc.richtext.InlineCssTextArea;
import java.util.Random;
public class Main extends Application {
private static final String ERROR_STYLE = "-fx-fill: red;";
private static final String WARN_STYLE = "-fx-fill: blue;";
public void start(Stage primaryStage) throws Exception {
final InlineCssTextArea inlineCssTextArea = new InlineCssTextArea();
primaryStage.setScene(new Scene(inlineCssTextArea));
primaryStage.show();
// Этот сделан для демонстрации
// Будут выведены 30 сообщение, тип сообщения (WARN, ERROR) определяется произвольно
new Thread(() -> {
Random random = new Random();
for (int i = 0; i < 30; i++) {
// Выбрали стиль
final String style = random.nextBoolean() ? ERROR_STYLE : WARN_STYLE;
// Сгенирировали сообщение
final String message = String.valueOf(i).concat("\n");
Platform.runLater(() -> {
// получаем границы нового сообещения
int from = inlineCssTextArea.getLength();
int to = from + message.length();
// добавили сообещние
inlineCssTextArea.appendText(message);
// указали для него стиль
inlineCssTextArea.setStyle(from, to, style);
});
try {
Thread.sleep(500);
} catch (InterruptedException ex) { /* NOP */ }
}
}).start();
}
}
и соответственно
<dependency>
<groupId>org.fxmisc.richtext</groupId>
<artifactId>richtextfx</artifactId>
<version>0.9.1</version>
</dependency>
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости