Input/Output FileChooserReplace

BoreX

Mitglied
Hey ... ich hab mein Programm jetz soweit, dass ich im theoretischen Sinne eine File choosen könnte, was leider nich geht, nach der Openaction läuft nichts mehr ): kann mir wer helfen?

Java:
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

import java.io.*;
import java.util.*;




public class FileChooserReplace extends JFrame
{
	  
	   JTextField   _fileNameTF  = new JTextField(15);
	    JFileChooser _fileChooser = new JFileChooser();
	    
	   FileChooserReplace()
	   {
		   
	   
	   _fileNameTF.setEditable(false);
      

       
       JPanel content = new JPanel();
       content.setLayout(new FlowLayout());
       content.add(new JLabel("File:"));
       content.add(_fileNameTF);
       
       

       
       JMenuBar menubar  = new JMenuBar();
       JMenu    fileMenu = new JMenu("File");
       JMenuItem openItem = new JMenuItem("Open...");
       

      
       menubar.add(fileMenu);
       fileMenu.add(openItem);
       
       this.setJMenuBar(menubar);
       this.setContentPane(content);
       
       this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       this.pack();                      
       this.setLocationRelativeTo(null); 
	   }
	   
	   
	    
	   
	   
	   public void replaceUmlaute(File f) throws IOException{
	        StringBuilder sb = new StringBuilder();
	        BufferedReader br = new BufferedReader(new FileReader(f));
	        String lineSeparator = System.getProperty("line.separator");
	        String line = null;
	        while((line = br.readLine()) != null){
	            if(sb.length() > 0)
	                sb.append(lineSeparator);
	            line = line.replaceAll("ä", "ae").
	            replaceAll("Ä", "Ae").
	            replaceAll("ö", "oe").
	            replaceAll("Ö", "Oe").
	            replaceAll("ü", "ue").
	            replaceAll("Ü", "Ue");
	            sb.append(line);
	        }
	        br.close();
	 
	        BufferedWriter bw = new BufferedWriter(new FileWriter(f));
	        bw.write(sb.toString());
	        bw.flush();
	        bw.close();
	    }
	   class OpenAction implements ActionListener {
	        public void actionPerformed(ActionEvent ae) {
	            
	            int retval = _fileChooser.showOpenDialog(FileChooserReplace.this);
	            if (retval == JFileChooser.APPROVE_OPTION) {
	                
	                File file = _fileChooser.getSelectedFile();
	                _fileNameTF.setText(file.getName());
	            }
	        }
	    }
	   
	   public static void main(String baum[])
	   {
		   JFrame window = new FileChooserReplace();
		   window.setVisible(true);
	   }

}
 

BoreX

Mitglied
ja wie soll ich dass denn beschreiben ? >.< ... Die Oberfläche öffnet sich, laut Programmcode(meines Wissens nach) sollte sich auch eine Datei öffnen lassen, was jedoch nicht geht. :(
 

Mofi

Bekanntes Mitglied
ja wie soll ich dass denn beschreiben ? >.< ... Die Oberfläche öffnet sich, laut Programmcode(meines Wissens nach) sollte sich auch eine Datei öffnen lassen, was jedoch nicht geht. :(

In deinem Code da oben hast du dem openItem Objekt dem Listener gar nicht hinzugefügt.
Wenn du den hinzufügst kannst du auch eine Datei durch dein Menü auswählen. Allerdings hab ich noch nicht ganz verstanden was du danach machen willst...

edit:
ich glaub ich habs nun verstanden was du machen willst... (Quelltext nur überflogen)
Du willst mit der MEthode "replaceUmlaute(File file)" einfach alle Umlaute in der geöffneten Datei ersetzen?
Also dazu musst du nun halt wie oben schon gesagt deinen Listener (den OpenActionListener) deinem Menüpunkt "Open" hinzufügen und evtl im Listener selber die replaceUmlaute-Methode aufrufen.

Oder du machst dir irgendwo noch ein Button in deine GUI der auf klicken die Methode aufruft.

Dann sollte es gehen. Zumindestens bei mir ging es eben. (Methodenaufruf von replaceUmlaute ist im Listener plaziert aus Faulheit ;) )

Wenn du den Quelltext willst sag bescheid (waren eh nur zwei Zeilen oder so ^^)
 
Zuletzt bearbeitet:

BoreX

Mitglied
kannst ihn mir gerne geben hät ich nichts gegen :) sry dass ich eben nich schon gepostet hab bin von der schule nachhause gelaufen un hab gegessen xD
 

Mofi

Bekanntes Mitglied
also ich hab wie gesagt auch nur zwei Zeilen hinzugefügt.
Zeile 24 und Zeile 67 (das try/catch ist auch vonmir bzw. von eclipse ;) )

Und von meiner getesteten Textdatei hat er auch die Umlaute geändert.

[Java]import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.*;

public class FileChooserReplace extends JFrame {

JTextField _fileNameTF = new JTextField(15);
JFileChooser _fileChooser = new JFileChooser();

FileChooserReplace() {

_fileNameTF.setEditable(false);

JPanel content = new JPanel();
content.setLayout(new FlowLayout());
content.add(new JLabel("File:"));
content.add(_fileNameTF);

JMenuBar menubar = new JMenuBar();
JMenu fileMenu = new JMenu("File");
JMenuItem openItem = new JMenuItem("Open...");
openItem.addActionListener(new OpenAction());

menubar.add(fileMenu);
fileMenu.add(openItem);

this.setJMenuBar(menubar);
this.setContentPane(content);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.pack();
this.setLocationRelativeTo(null);
}

public void replaceUmlaute(File f) throws IOException {
StringBuilder sb = new StringBuilder();
BufferedReader br = new BufferedReader(new FileReader(f));
String lineSeparator = System.getProperty("line.separator");
String line = null;
while ((line = br.readLine()) != null) {
if (sb.length() > 0)
sb.append(lineSeparator);
line = line.replaceAll("ä", "ae").replaceAll("Ä", "Ae")
.replaceAll("ö", "oe").replaceAll("Ö", "Oe")
.replaceAll("ü", "ue").replaceAll("Ü", "Ue");
sb.append(line);
}
br.close();

BufferedWriter bw = new BufferedWriter(new FileWriter(f));
bw.write(sb.toString());
bw.flush();
bw.close();
}

class OpenAction implements ActionListener {
public void actionPerformed(ActionEvent ae) {

int retval = _fileChooser.showOpenDialog(FileChooserReplace.this);
if (retval == JFileChooser.APPROVE_OPTION) {

File file = _fileChooser.getSelectedFile();
_fileNameTF.setText(file.getName());
try {
replaceUmlaute(file);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

public static void main(String baum[]) {
JFrame window = new FileChooserReplace();
window.setVisible(true);
}

}[/Java]
 

Oben