Öffnen, Speichern von Dat. über DialogBoxen

pawlo

Mitglied
Hallo zusammen,

habe unlängst versucht mir einen einfachen Editor zum öffnen und speichern von Dateien zusammengestellt. Zur Hilfe habe ich Bücher und das Forum durchsucht und so den Quelltext geschr.
Leider komme ich aber nicht mehr weiter. Mein Edi öffnet zwar DialogBoxen zum Auswahl von Dat., die Dat selbst lassen sich nicht öffnen. Ausserdem wollte ich den einen Button von öffnen->save umändern.
Weisst jm. wie es weitergeht? Anbei mein Quellcode.

Danke, Gruß Pawel

package jpr20;


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.accessibility.Accessible;
import javax.swing.JComponent;
import javax.swing.JFileChooser;


public class Jpr20 extends JFrame implements ActionListener,Accessible
{
private JTextArea jta;
private JButton jb;

private JMenuBar menueleiste;
private JMenu ablageMenue;
private JMenuItem beendenMenueEintrag, save,open, saveas;

public FileDialog fl;

// public JFrame owner;

public Jpr20 ()
{
super ("JEditor");
JPanel mainpanel = new JPanel ();
mainpanel.setLayout (new BorderLayout ());
this.getContentPane ().add (mainpanel);

//jb = new JButton ("foobar");
//jb.addActionListener (this);
jta = new JTextArea ();
menueleiste = new JMenuBar();
ablageMenue = new JMenu("File");
beendenMenueEintrag = new JMenuItem("Beenden");
beendenMenueEintrag.addActionListener(this);
beendenMenueEintrag.setEnabled(true);

open = new JMenuItem("Open");
open.addActionListener(this);
open.setEnabled(true);

save = new JMenuItem("Save");
save.addActionListener(this);
save.setEnabled(true);

saveas = new JMenuItem("SaveAs");
saveas.addActionListener(this);
saveas.setEnabled(true);

ablageMenue.add(beendenMenueEintrag);
ablageMenue.add(open);
ablageMenue.add(save);
ablageMenue.add(saveas);
menueleiste.add(ablageMenue);


jta.setBounds (20, 10, 560, 450);
jta.setLineWrap (true);
jta.setWrapStyleWord (true);
JScrollPane j=new JScrollPane (jta);

j.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
mainpanel.add (j, BorderLayout.CENTER);
mainpanel.add (menueleiste, BorderLayout.NORTH);
setSize (400, 400);
setLocation (100, 100);
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
setVisible (true);



}



public void actionPerformed (ActionEvent e)
{
String cmd = e.getActionCommand ();
if (cmd.equals ("Open"))
{

new panelZwei();
// new JFileChooser();
//new JFileCh();
}

if(cmd.equals("Beenden"))
{
dispose();
System.exit(0);
}

if(cmd.equals("SaveAs"))
{
//new panelZwei();
new JFileCh();


}
}

public class panelZwei extends JFrame implements ActionListener,Accessible
{
public String filename;
panelZwei()
{
FileDialog filedia = new FileDialog(this, "Open"); //this=MainFrame
filedia.setFile("*.txt");
filedia.show();
filename = filedia.getFile();
// int auswahl = filedia.showOpenDialog();
}
//if (filename != null) {
// Datei eroeffnen und so weiter
// }
//filedia.dispose();

public void actionPerformed (ActionEvent e)
{

}
}

public class JFileCh extends JComponent implements Accessible
{
public JFileCh()
{

JFileChooser chooser = new JFileChooser();


int returnVal = chooser.showOpenDialog(this);
// FileNameExtensionFilter filter = new FileNameExtensionFilter("JPG & GIF Images", "jpg", "gif");
// chooser.setFileFilter(filter);
if(returnVal == JFileChooser.APPROVE_OPTION) {
System.out.println("You chose to open this file: " +
chooser.getSelectedFile().getName());


}

}

}

public static void main (String args[])
{
new Jpr20();

}
}
 
Schreibe deinen Java™ Quelltext bitte in
Java:
[/B]-Tags[/SIZE][/COLOR], sonst wird sich hier wohl kaum jemand die Mühe machen ihn durchzulesen.
 
Java:
package jpr20;


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.accessibility.Accessible;
import javax.swing.JComponent;
import javax.swing.JFileChooser;


  public class Jpr20 extends JFrame implements ActionListener,Accessible
{
	private JTextArea jta;
	private JButton jb;
        
        private   JMenuBar menueleiste;
        private  JMenu ablageMenue;
        private  JMenuItem beendenMenueEintrag, save,open, saveas;
        
        public   FileDialog fl;
      
       // public JFrame owner;
       
	public Jpr20 ()
	{
		super ("JEditor");
		JPanel mainpanel = new JPanel ();
		mainpanel.setLayout (new BorderLayout ());
		this.getContentPane ().add (mainpanel);

		//jb = new JButton ("foobar");
		//jb.addActionListener (this);
		        jta = new JTextArea ();
		menueleiste = new JMenuBar();
             ablageMenue = new JMenu("File");
            beendenMenueEintrag = new JMenuItem("Beenden");
            beendenMenueEintrag.addActionListener(this);
            beendenMenueEintrag.setEnabled(true);
              
                open = new JMenuItem("Open");
                open.addActionListener(this);
                open.setEnabled(true);
                 
                save = new JMenuItem("Save");
                save.addActionListener(this);
                save.setEnabled(true);
            
                saveas = new JMenuItem("SaveAs");
                saveas.addActionListener(this);
                saveas.setEnabled(true);
                
                ablageMenue.add(beendenMenueEintrag);
                ablageMenue.add(open);
                ablageMenue.add(save);
                ablageMenue.add(saveas);
                menueleiste.add(ablageMenue);
            
            
		jta.setBounds (20, 10, 560, 450);
		jta.setLineWrap (true);
		jta.setWrapStyleWord (true);
		JScrollPane j=new JScrollPane (jta);
              
		j.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
                mainpanel.add (j, BorderLayout.CENTER);
	        mainpanel.add (menueleiste, BorderLayout.NORTH);
                setSize (400, 400);
		setLocation (100, 100);
		setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
                setVisible (true);    
                
                
                              
	}
        
        

	public void actionPerformed (ActionEvent e)
	{
		String cmd = e.getActionCommand ();
		if (cmd.equals ("Open"))
		{
			
                  new panelZwei();
                  //  new JFileChooser();
                   //new JFileCh();
		}
		
                if(cmd.equals("Beenden"))
                {
                     dispose();
                     System.exit(0);
                }
               
                if(cmd.equals("SaveAs"))
                {
                  //new panelZwei();
                  new JFileCh();
                    
                         
                }          
                    	}
       
       public class panelZwei extends JFrame implements ActionListener,Accessible
        {
           public String filename;
            panelZwei()
            {
         FileDialog filedia = new FileDialog(this, "Open"); //this=MainFrame
         filedia.setFile("*.txt");
         filedia.show();
         filename = filedia.getFile();
        // int auswahl = filedia.showOpenDialog();
            }
        //if (filename != null) {
        // Datei eroeffnen und so weiter
        // }
       //filedia.dispose();
            
            public void actionPerformed (ActionEvent e)
	      {               
     
              }        
}
      
         public class JFileCh extends JComponent implements Accessible
        {
         public  JFileCh()
         {
            
           JFileChooser chooser = new JFileChooser();
           
   
          int returnVal = chooser.showOpenDialog(this);
      //   FileNameExtensionFilter filter = new FileNameExtensionFilter("JPG & GIF Images", "jpg", "gif");
       // chooser.setFileFilter(filter);
          if(returnVal == JFileChooser.APPROVE_OPTION) {
          System.out.println("You chose to open this file: " +
          chooser.getSelectedFile().getName());
         
        
         }
        
         }
             
        }
     
	public static void main (String args[])
	{
		new Jpr20();
                     
        }
  }
 
Pflicht:
- File lesen: Mit dem ausgewählten Namen als Parameter einen FileInputStream erzeugen und mit dessen read-Methoden arbeiten.
- File schreiben: Mit dem ausgewählten Namen einen FileOutputStream erzeugen und mit dessen write-Methoden dort hineinscheiben.

Kür:
- Den Zugriff auf das File mit BuffereInputStream/BufferedOutputStream puffern.
- Wenn es sich um Textbasierte Dateien handelt, statt der Streams die entspr. Reader benutzen.

Ich hoffe, dass Du das mit "öffnen" meintest.
 
Java:
final File selectedFile = chooser.getSelectedFile();

	// Zum Einlesen binärer Dateien (kann man auch für Textdateien
	// benutzen, aber mit Readern hat man ein paar mehr bequeme
	// Methoden).
	final BufferedInputStream buffIn = new BufferedInputStream(
		new FileInputStream(selectedFile));
		
	// Nur zum Einlesen textbasierter Dateien (binäre Dateien nur mit Streams)
	final BufferedReader buffReader = new BufferedReader(new FileReader(selectedFile));
		
	// Zum Schreiben in binäre Dateien (kann man auch für Textdateien
	// benutzen, aber mit Writern hat man ein paar mehr bequeme
	// Methoden).
	final BufferedOutputStream buffOut = new BufferedOutputStream(
		new FileOutputStream(selectedFile));
		
	// Nur zum Schreiben textbasierter Dateien (binäre Dateien nur mit Streams)
	final BufferedWriter buffWriter = new BufferedWriter(new FileWriter(selectedFile));
Die Exceptions musst Du noch behandeln. Bspw. fangen und dem User die Message als Fehler anzeigen.
 
Zuletzt bearbeitet von einem Moderator:
jetzt ist soweit alles ok bis auf

Java:
 new FileInputStream(selectedFile));

muss ich einen try/catch Block schreiben?
 
ja, habe es versucht, es läuft soweit alles allerdings werden Dat. nicht geöffnet.
Fehlt noch etwas im Quelltext?

Java:
 public void inStream() throws Exception
            {
           JFileChooser chooser = new JFileChooser();
           final File selectedFile = chooser.getSelectedFile(); 
         //  final BufferedInputStream buffIn = new BufferedInputStream(
        //   new FileInputStream(selectedFile));
            final BufferedReader buffReader = new BufferedReader(new FileReader(selectedFile));
           /*  int returnVal = chooser.showOpenDialog(this);
             if(returnVal == JFileChooser.APPROVE_OPTION) {
            System.out.println("You chose to open this file: " +
            chooser.getSelectedFile().getName());
            }*/
            }
 

Zurück
Oben