Java Texteditor

Infernostar

New member
Hallo Forum!
Ich habe mal wieder eine Frage zu Java. Ich hab die Aufgabe bekommen, einen Texteditor zu erstellen. Nun meine Frage: Ich bekomme das nicht auf die Reihe, dass der die Befehle für Drucken, Speichern und Beenden annimmt und "abspielt". Das funktioniert bei mir einfach nicht. Hier mein Quelltext:

Code:
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;

import javax.swing.*;
import javax.swing.event.MenuKeyEvent;
import javax.swing.event.MenuKeyListener;


public class Main extends JFrame
    {
    String CopiedText;
    public static JTextArea TextField;
    JMenuBar MenuBar;
    JMenu Datei;
    JMenuItem Öffnen, Drucken, Speichern_unter, Beenden;
    JScrollPane ScrollPane;
    JFileChooser FileChooser;
    MenuKiiListener listener;
    
    public Main()
    {
        super("Texteditor");
        this.setBounds(0, 0, 800, 800);
        this.setLayout(new BorderLayout());
        TextField = new JTextArea();
        TextField.setBounds(0, 0, 100, 100);
        this.add(TextField, BorderLayout.CENTER);
        listener = new MenuKiiListener();
        MenuBar = new JMenuBar();
        Datei = new JMenu("Datei");
        Speichern = new JMenuItem("Speichern");
        Öffnen = new JMenuItem("Öffnen");
        Drucken = new JMenuItem("Drucken");
        Speichern_unter = new JMenuItem("Speichern unter");
        Beenden = new JMenuItem("Beenden");
        Speichern.addActionListener(listener);
        Öffnen.addActionListener(listener);
        Drucken.addActionListener(listener);
        Speichern_unter.addActionListener(listener);
        Beenden.addActionListener(listener);
        Datei.add(Speichern);
        Datei.add(Öffnen);
        Datei.add(Drucken);
        Datei.add(Speichern_unter);
        Datei.addSeparator();
        Datei.add(Beenden);
        MenuBar.add(Datei);
        ScrollPane = new JScrollPane();
        ScrollPane.setViewportView(TextField);
        this.add(ScrollPane, BorderLayout.CENTER);
        this.setJMenuBar(MenuBar);
        
        this.setVisible(true);
    }
    public static void main(String[] args) 
    {
        Main myMain = new Main();
    }
    JMenuItem Speichern;

}
class MenuKiiListener implements ActionListener
{
     JFileChooser chooser;
     DataInputStream reader;
     String sText;
     FileOutputStream fos; 
    DataOutputStream dos;
    public MenuKiiListener()
    {
        chooser = new JFileChooser();
    }
    
    public void actionPerformed(ActionEvent e) 
    {
         if (e.getActionCommand() == "Speichern unter")
         {
           int returnv = chooser.showSaveDialog(null);
           if (returnv == chooser.APPROVE_OPTION) 
           {
                File myfile = chooser.getSelectedFile();
                if (!myfile.getName().endsWith(".txt"))
                {
                    //myfile.getName() += ".txt";
                }
                {
                    try 
                    {
                        fos = new FileOutputStream(myfile);
                    } 
                    catch (FileNotFoundException e1) {}
                    dos=new DataOutputStream(fos);
                    try {
                        dos.writeChars(Main.TextField.getText());
                    } catch (IOException e1) {}
                }
   
           }
         }
         if (e.getActionCommand() == "Öffnen")
         {
          int returnv = chooser.showOpenDialog(null);
          if (returnv == chooser.APPROVE_OPTION)
          {
              File myfile = chooser.getSelectedFile();
              try 
              {
                BufferedInputStream buffered = new BufferedInputStream(new FileInputStream(myfile));
                reader = new DataInputStream(buffered);
                try 
                {
                    while((sText = reader.readLine()) != null)
                    {
                        Main.TextField.append(sText);
                    }
                } 
                catch (IOException e1) {}
              } 
              catch (FileNotFoundException e1) {}
              
              finally
              {
              }

          }
          }
         if (e.getActionCommand() == "Drucken")
         {
          System.out.println("Hi");
         }
         if (e.getActionCommand() == "Speichern")
         {
          System.out.println("Hi");
         }
         if (e.getActionCommand() == "Beenden")
         {
          System.out.println("Hi");
         }
    }



    
}
Bitte um Hilfe. :/

LG
Infernostar


EDIT: Falsches Forum!
 
Zuletzt bearbeitet:
Ja, das habe ich als "Platzbesetzer" dahin geschrieben. Aber wie ich das programmieren soll, mit welchen Konstruktoren etc. weiß ich nicht....
 
Für was Konstruktoren? Du brauchst doch nicht zwangsläufig neue Klassen.

Beenden ist wohl das einfachste: System.exit(0);
Fertig. Optimal wäre hier noch eine Abfrage bei ungespeichertem Text.

Speichern ist kaum komplizierter. Entweder es wurde schon gespeichert oder eine vorhandene Datei wurde geöffnet. In beiden Fällen hast du einen Pfad, den du dir merken musst. Idealerweise solltest du fürs Speichern eine extra Methode verwenden, damit du nicht nochmal alles schreiben musst (perfekt wäre übrigens eine eigene Klasse für die Persistenz).

Drucken ist schon etwas schieriger, weil man etwas mehr als "einfaches Standard-Java" braucht. Musste auch erst googeln, aber es gibt wirklich zig Infos dazu:


 
Das mit dem Drucken krieg ich hoffentlich bald raus. ^^

Und mit Speichern: ich muss doch nur: doSaveCommand(); benutzen, oder nicht? Wenn ja, geht das irgendwie nicht, weiß nicht, warum nicht....
 
doSaveCommand()? Du meinst irgendwie wegen dem getActionCommand()? Das hat damit nichts zu tun. Ich denke auch nicht, dass es eine doSaveCommand()-Methode gibt.

Außerdem hast du doch oben schon alles was du brauchst, bei der Action für Speichern unter (der "Text" wird übrigens als " T e x t" gespeichert, aber erst mal wayne). Du könntest alles in eine neue IF-Anweisung kopieren und die Auswahl des Pfades (den JFileChooser) weg lassen. Das ist aber recht "dumm" programmiert.

Speicher dir einfach das File als Klassen-Attribut, dann kannst du immer drauf zugreifen und hast den Pfad wenn eine Datei geöffnet oder schon mal mit "Speichern unter" gespeichert wurde.

Hast du den Code selbst geschrieben? Ich glaube nicht, dass du den verstanden hast?
 
Na ja, teils, teils. Ein Freund hat was geschrieben, ich und den Rest mussten wir aus dem Internet für das Projekt suchen, weil wir das noch nicht hatten. Zudem habe ich vieles verpasst im Unterricht, da ich häufig nicht da war.
Deswegen brauche ich jetzt Hilfe. :S


PS: Hast du ICQ, MSN oder Skype?
 

Online-Statistiken

Zurzeit aktive Mitglieder
1
Zurzeit aktive Gäste
28
Besucher gesamt
29

Beliebte Forum-Themen

Zurück
Oben Unten