Элемент управления 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() {
@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/ .
Вместо использования strcpy
, почему бы просто не переместить указатели узла? Если это односвязный список, вам понадобится узел before
, предшествующий узлу temp
, поэтому, когда вы делаете temp = temp->next
, вы сначала делаете before = temp
. Вот как вы бы поступили с двусвязным узлом:
if (strcmp(/*...*/) > 0) {
ReviewNode *swap = temp->next;
temp->next = swap->next;
swap->prev = temp->prev;
swap->next = temp;
temp->prev = swap;
}
Таким образом, вам не нужно копировать строки, которые могут занимать гораздо больше времени, чем простое перемещение узлов. Хороший способ узнать, как перемещать эти ссылки, - это взять карандаш и лист бумаги и смоделировать отсортированный список. Это требует времени, но в конечном итоге вы многому у него учитесь!
Без гораздо большей информации трудно понять, с какими проблемами вы сталкиваетесь. Удачи!