JavaFX JavaFX Texteditor

MaxG.

Bekanntes Mitglied
Hi,

ich bin gerade dabei einen Texteditor in Java mit dem FX framework zu programmieren. Der Einfachheit halber habe ich die Komponente HTMLEditor verwendet. Allerdings habe ich Probleme mit dem Zeilenumbruch. Ich habe schon probiert dem String "\n" mitzugeben, aber es hat nicht funktioniert. Hat jemand eine Idee, bin dabei für alles offen. Würde auch gerne eine andere Komponente als HTMLEditor zu verwenden.

Hier noch mein bisheriger Code:
Code:
package FX;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;

import javax.swing.JOptionPane;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuBar;
import javafx.scene.control.MenuItem;
import javafx.scene.layout.BorderPane;
import javafx.scene.web.HTMLEditor;
import javafx.stage.FileChooser;
import javafx.stage.Stage;

public class Editor extends Application{

    Scene scene;
   
    BorderPane root;
   
   
    MenuBar menuBar;
   
    Menu file;
   
    MenuItem open;
    MenuItem save;
   
    HTMLEditor editor;
   
    String filepath;
   
   
    public static void main(String[] args) {
        launch();
    }
   
    @Override
    public void start(Stage stage) throws Exception {
        // TODO Auto-generated method stub
        root = new BorderPane();
       
        //Menu
        menuBar = new MenuBar();
       
        file = new Menu("file");
       
        open = new MenuItem("open");
        save = new MenuItem("save");
       
        file.getItems().addAll(open, save);
       
        menuBar.getMenus().addAll(file);
       
        editor = new HTMLEditor();
       
        //Set content
        root.setTop(menuBar);
        root.setCenter(editor);
        scene = new Scene(root);
       
        stage.setScene(scene);
        stage.setMaximized(true);
        stage.show();
        listener();
    }
   
   
    private void listener(){
        open.setOnAction(new EventHandler<ActionEvent>() {
           
            @Override
            public void handle(ActionEvent arg0) {
                // TODO Auto-generated method stub
                FileChooser fileChooser = new FileChooser();
                File file = fileChooser.showOpenDialog(null);
               
                if (file != null) {
                    String path = file.getAbsolutePath().toString();
                    path = file.getAbsolutePath().replace("\\", "/");
                    filepath = file.getAbsolutePath();
                   
                    try (BufferedReader br = new BufferedReader(new FileReader(filepath))) {

                        String sCurrentLine;
                        while ((sCurrentLine = br.readLine()) != null) {
                            editor.setHtmlText(editor.getHtmlText() + "\n" + sCurrentLine.toString());
                        }

                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }else{
                    filepath = "null";
                    JOptionPane.showMessageDialog(null, "Keine Datei ausgewählt");
                }
            }
        });
       
        save.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent arg0) {
                // TODO Auto-generated method stub
                try {
                    Writer writer = new BufferedWriter(new OutputStreamWriter(
                            new FileOutputStream(filepath), "utf-8"));
                    writer.write(editor.getHtmlText());
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });
       
    }

}
 
aber wenn Du schon mit HTML-text hantierst, müsstest Du dann nicht auch einen HTML-mässigen ZU nehmen??
also <p> oder <br> ??
VG Klaus
 

Zurück
Oben