JavaFX JavaFX HTMLEditor-Eingabe in Textarea als HTML anzeigen

fhs14647

Mitglied
Werte Profis
Ich habe ein kleines Tool geschrieben, bei dem man in ein HTLMEditor-Element normalen Text einfügt, der dann in einer TextArea als HTML-Code angezeigt wird. Das funkt auch, nur wenn ich nachträglich eine Formatänderung im HTMLEditor mache, wird das nicht mitübernommen.
Meine Frage: kann man auf einen HTML-Editor eine ChangeListener adden, der jede Änderung sofort aufnimmt??

Vielen Dank vorab
Java:
public class JavaFXHtmlEditor extends Application {

@Override
public void start(Stage primaryStage) {

    VBox root = new VBox();
    root.setSpacing(10);
    HBox up = new HBox();
    up.setPrefHeight(300);
    up.setPrefWidth(500);
    up.setAlignment(Pos.CENTER);
    HBox down = new HBox();
    down.setPrefHeight(200);
    up.setPrefWidth(400);
    down.setAlignment(Pos.CENTER);
    HTMLEditor htmlEditor = new HTMLEditor();
    TextArea textArea = new TextArea();
    textArea.setWrapText(true);
    up.getChildren().add(htmlEditor);
    down.getChildren().add(textArea);
    root.getChildren().addAll(up, down);

    htmlEditor.addEventHandler(KeyEvent.KEY_RELEASED, new EventHandler<KeyEvent>() {

        @Override
        public void handle(KeyEvent event) {
            textArea.setText(htmlEditor.getHtmlText());
        }
    });

    htmlEditor.addEventHandler(MouseEvent.MOUSE_RELEASED, new EventHandler<MouseEvent>() {

        @Override
        public void handle(MouseEvent event) {
            textArea.setText(htmlEditor.getHtmlText());
        }
    });

    Scene scene = new Scene(root, 600, 400);

    primaryStage.setTitle("Plain Text to HTML");
    primaryStage.setScene(scene);
    primaryStage.show();
}

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
    launch(args);
}
 
Ich habe es jetzt selbst gelöst mit einem InputEvent.ANY

Java:
htmlEditor.addEventHandler(InputEvent.ANY, new EventHandler<InputEvent>() {

            @Override
            public void handle(InputEvent event) {
                textArea.setText(htmlEditor.getHtmlText());
            }
        });
 
Hab mich auch gerade durch den Quellcode des HTMLEditor, der HTMLEditorSkin-Klasse und so weiter gegraben. Ist wirklich die einzige Art. Aber ich muss sage: Das sieht ja noch recht elegant aus!
 

Zurück
Oben