Kann jemand eine Umgehungslösung vorschlagen, um im vorhandenen HTML-Editor von javafx Hoch- und Tiefgestellt-Steuerelemente hinzuzufügen. Ich versuche, einen Formel-Feld-Editor mit Fett, Kursiv, Hochgestellt, Tiefgestellt und Schriftart-Selektor als Steuerelemente zu entwickeln.Hochgestellt und tiefgestellt in javafx
Antwort
Dies ist nicht möglich (AFAIK) ohne einige ziemlich schwere Hacking, Zugriff auf Teile der API, die nicht zugegriffen werden sollen. Das Folgende funktioniert mehr oder weniger; Ich habe es auf der source code für die HTMLEditorSkin
basiert. Möglicherweise müssen Sie Ihre IDE davon überzeugen, dass Sie auf die entsprechenden Pakete zugreifen können. Dies ist nicht besonders zu empfehlen, und es wird mit ziemlicher Sicherheit nicht funktioniert in Java 9.
import com.sun.javafx.webkit.Accessor;
import com.sun.webkit.WebPage;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.event.Event;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.ToggleButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.control.ToolBar;
import javafx.scene.input.KeyEvent;
import javafx.scene.input.MouseEvent;
import javafx.scene.web.HTMLEditor;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
public class HTMLEditorHack extends Application {
@Override
public void start(Stage primaryStage) {
HTMLEditor editor = new HTMLEditor();
Scene scene = new Scene(editor);
editor.applyCss();
editor.layout();
WebView webView = (WebView) editor.lookup(".web-view");
ToolBar toolbar = (ToolBar) editor.lookup(".bottom-toolbar");
ToggleGroup toggleGroup = new ToggleGroup();
createToggleButton("superscript", "Super", toggleGroup, webView, toolbar);
createToggleButton("subscript", "Sub", toggleGroup, webView, toolbar);
primaryStage.setScene(scene);
primaryStage.show();
}
private void createToggleButton(String command, String label, ToggleGroup toggleGroup, WebView webView, ToolBar toolbar) {
ToggleButton button = new ToggleButton(label);
button.setFocusTraversable(false);
button.selectedProperty().addListener((obs, wasSelected, isSelected) -> {
WebPage page = Accessor.getPageFor(webView.getEngine());
if (page.queryCommandState(command) != isSelected) {
page.executeCommand(command, null);
}
});
button.setToggleGroup(toggleGroup);
toolbar.getItems().add(button);
EventHandler<Event> updateState = e -> {
Platform.runLater(() -> {
WebPage page = Accessor.getPageFor(webView.getEngine());
button.setDisable(! page.queryCommandEnabled(command));
button.setSelected(page.queryCommandState(command));
});
};
webView.addEventHandler(KeyEvent.ANY, updateState);
webView.addEventHandler(MouseEvent.MOUSE_PRESSED, updateState);
webView.addEventHandler(MouseEvent.MOUSE_RELEASED, updateState);
}
public static void main(String[] args) {
launch(args);
}
}
Wenn Sie ein Formel-Editor zum Erstellen, einen robusteren Ansatz brauchen würde ich wahrscheinlich Ihre eigene betrachten Aufbau, anstelle der Verwendung/Hacking HTMLEditor
. Es gibt eine dritte Bibliothek, RichTextFX, die verwendet werden kann, um einen bearbeitbaren Textbereich mit verschiedenen Stilen zu erstellen. Beginne dort und füge deine eigenen Steuerelemente für das Styling hinzu.
- 1. Hochgestellt/tiefgestellt in Hyperlink in WPF
- 2. tiefgestellt und hochgestellt in ylab von qplot [R]
- 3. Wie stapelt man tiefgestellt und hochgestellt in xsl-fo (ohne MathML)
- 4. Ist es möglich, in ActiveAdmin-Seiten tiefgestellt und hochgestellt zu machen?
- 5. Tiefgestellt in Text (Windows Forms) in C#
- 6. Ermitteln, ob eine Schriftart Varianten unterstützt (z. B. hochgestellt und tiefgestellt)
- 7. hochgestellt in asp label
- 8. Hochgestellt in Crystal reports Formel
- 9. Tiefgestellt in ggplot2
- 10. TCPDF - hochgestellt ohne HTML
- 11. Wie hochgestellt mit ggplot2
- 12. Wie tiefgestellt anzeigen in Java
- 13. Gnuplot: tiefgestellt und supercript in x- und y-Achsenbeschriftungen
- 14. Wie schreibt man hochgestellt in Android?
- 15. Hochgestellt innerhalb des Codeblocks in Github Markdown
- 16. Mehrdeutige Verwendung gehen 'tiefgestellt'
- 17. NSMutableAttributedString zum Hinzufügen von Index (hochgestellt) für NSTextView von String
- 18. Warnung-Array tiefgestellt char
- 19. Wie können benutzerbasierte Fragen und Antworten hochgestellt gespeichert werden?
- 20. swift 3 alamofire swiftyjson tiefgestellt
- 21. Hochgestellt auf die Auswahl mit JavaScript
- 22. "Squared" hochgestellt in ggplot2 yaxis Label in R
- 23. TableView und Spinner in JavaFX
- 24. Wie hochgestellt werden Text für Schaltflächen in Windows Forms?
- 25. SWIFT ERROR Undeutlicher Verweis auf Mitglied 'tiefgestellt'
- 26. R loop error: Tiefgestellt außerhalb der Grenzen
- 27. swift 3.0 Mehrdeutige Referenz auf Mitglied 'tiefgestellt'
- 28. JavaFX und Gradle
- 29. JavaFX 2 und Internationalisierung
- 30. Dependency Injection und JavaFX