Другим вариантом, если производительность является проблемой, является использование расширения data.table
для расширения reshape2
расплава & amp; dcast functions
( Ссылка: эффективная перестройка с использованием data.tables )
library(data.table)
setDT(dat1)
dcast(dat1, name ~ numbers, value.var = "value")
# name 1 2 3 4
# 1: firstName 0.1836433 -0.8356286 1.5952808 0.3295078
# 2: secondName -0.8204684 0.4874291 0.7383247 0.5757814
И, как и в data.table v1.9.6, мы можем использовать несколько столбцов
## add an extra column
dat1[, value2 := value * 2]
## cast multiple value columns
dcast(dat1, name ~ numbers, value.var = c("value", "value2"))
# name value_1 value_2 value_3 value_4 value2_1 value2_2 value2_3 value2_4
# 1: firstName 0.1836433 -0.8356286 1.5952808 0.3295078 0.3672866 -1.6712572 3.190562 0.6590155
# 2: secondName -0.8204684 0.4874291 0.7383247 0.5757814 -1.6409368 0.9748581 1.476649 1.1515627
Элемент управления JavaFX TextArea (начиная с версии 2.0.2) не поддерживает редактирование текстового шрифта (шрифты и т. д.).
Вы можете выделить непрерывные строки символов в TextArea, манипулируя выберите SelectRange в TextArea, как в следующем примере:
public class TextHighlight extends Application {
public static void main(String[] args) { Application.launch(args); }
@Override public void start(Stage stage) {
final TextArea text = new TextArea("Here is some textz to highlight");
text.setStyle("-fx-highlight-fill: lightgray; -fx-highlight-text-fill: firebrick; -fx-font-size: 20px;");
text.setEditable(false);
text.addEventFilter(MouseEvent.ANY, new EventHandler<MouseEvent>() {
@Override public void handle(MouseEvent t) { t.consume(); }
});
stage.setScene(new Scene(text));
stage.show();
Platform.runLater(new Runnable() {
@Override public void run() { text.selectRange(13, 18); }
});
}
}
Вы можете использовать приведенный выше код в качестве основы для переключения режима TextArea в режим только чтения, пока проверка орфографии происходит. Внедрите подсказку, чтобы найти и исправить каждое слово по очереди, пока проверка орфографии не будет завершена. Выполните запрос в отдельном диалоговом окне или панели. Демонстрация Jazzy, похоже, работает таким образом http://jazzy.sourceforge.net/demo.html , поэтому довольно легко преобразовать свой Swing UI в JavaFX.
В качестве альтернативы вы можете использовать элемент управления JavaFX WebView для переноса любой из многих javascript / html-инструментов проверки орфографии (например, http://www.javascriptspellcheck.com/ ) с использованием техники, аналогичной той, демонстрируется здесь: http://jewelsea.wordpress.com/2011/12/11/codemirror-based-code-editor-for-javafx/ .
Возможно ... вид
Я знаю, что этот вопрос решен, но я нашел способ исправить эту проблему и подумал, что я опубликую ее для других людей, которые также наткнулись на эту запись , Это немного взломанно, но он работает в крайнем случае, если вам нужно выделить текст в TextArea и не хотите принимать неудовлетворительный «невозможный» ответ.
Прямоугольник теперь идеально сочетается с фоном, но изменит цвет текста. Отключение прямоугольника означает, что он не будет выглядеть как нечто большее, чем аскетичный для пользователя - например, действия, подобные щелчку на прямоугольнике, не будут иметь неожиданного эффекта.
Вы можете слегка настроить этот метод, если различные цвета желательны.
Я могу опубликовать детали реализации, если люди заинтересованы, скептически настроены, или если сложно работать.
С помощью JavaFX 8 вы можете использовать TextFlow
. Вы можете определить определенные классы стиля для жирного, красного, зеленого или любого типа Тексты и упорядочить их в TextFlow при назначении желаемого стиля класс для каждого текста
RichTextFX позволяет добавлять стиль в текстовые диапазоны.