Sonderzeichen (ä, ö, ü) in JTextArea

Status
Nicht offen für weitere Antworten.

Campino

Top Contributor
Hi,
kann es sein, dass eine JTextArea aus & auml ; automatisch ä macht?

Ich hab ein kleines Tool geschrieben, dass in Dateien ä, ö und ü gegen die &-Dinger austauscht und lasse dass Ergebnis in einer JTextArea anzeigen, da ist aber keine Änderung sichtbar...Liegt das daran, dass die JTextArea sie wieder *zurücktauscht* oder funktioniert mein Programm nicht?
 
Zeig mal deinen Code.
Bei dir macht er also aus "& auml ;" automatisch ä?

Hab das gerade mal in einem Prog mit einer JTextArea ausprobiert und da hat er es nicht gemacht.
 
Hier ist er:

Code:
import java.awt.event.*;
import de.campino.util.*;
import javax.swing.*;
import java.io.*;

public class StartEncoding extends JFrame implements ActionListener{
	private JMenuBar jmb=new JMenuBar();
	private JMenu jm=new JMenu("Datei");
	private JMenuItem jml=new JMenuItem("laden");
	private JMenuItem jme=new JMenuItem("encodieren");
	private JMenuItem jms=new JMenuItem("speichern");
	private File file;
	private JTextArea text=new JTextArea();
	
	public static void main(String[] args) {
		new StartEncoding();
	}
	
	public StartEncoding(){
		super("Character Encoding");
		
		createMenu();
		
		this.setJMenuBar(jmb);
		
		this.getContentPane().add(text);
		
		this.setVisible(true);
	}
	
	private void createMenu(){
		jml.addActionListener(this);
		jme.addActionListener(this);
		jms.addActionListener(this);
		
		jm.add(jml);
		jm.add(jme);
		jm.add(jms);
		
		jmb.add(jm);
	}

	public void actionPerformed(ActionEvent ie) {
		if(ie.getSource().equals(jml)){ //datei laden
			text.setText("");
			
			JFileChooser fc=new JFileChooser();
			fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
			fc.setMultiSelectionEnabled(false);
			fc.showOpenDialog(this);
			
			if(fc.getSelectedFile()!=null){
				file=fc.getSelectedFile();
			}
			
			BufferedReader bs;
			try{
			bs=new BufferedReader(new InputStreamReader(new FileInputStream(file)));
			
			String line;
			while((line=bs.readLine())!=null){
				text.append(line);
				text.append("\n");
			}
			
			}catch(FileNotFoundException e){
				new JMessage(e.getMessage(), "Fehler!", "Ok");
			}catch(IOException e){
				new JMessage(e.getMessage(), "Fehler!", "Ok");
			}
			
		}else if(ie.getSource().equals(jme)){ //austauschen
			System.out.println("tach z'samm");
			
			String sb=text.getText();
			//kleines ä
			sb.replace(new String("ä"), new String("& auml;"));
			
//			großes Ä
			sb.replace(new String("Ä"), new String("& Auml;"));
			
//			großes Ü
			sb.replace(new String("Ü"), new String("& Uuml;"));
			
//			kleines ü
			sb.replace(new String("ü"), new String("& uuml;"));

//			großes Ö
			sb.replace(new String("Ö"), new String("& Ouml;"));
			
//			kleines ö
			sb.replace(new String("ö"), new String("& ouml;"));

//			scharfes S
			sb.replace(new String("ß"), new String("& szlig;"));
			
			System.out.println(sb);
			text.setText(sb);
		}else if(ie.getSource().equals(jms)){
			//speichern (fehlt noch)
		}
	}
}
 
strings sind unveränderlich, nac hdeinem replace musst du den zurückgegeben string wieder sb zuweisen: sb = sb.replace(bla)
au0erdem gibts keine methode replace(String, String) meintest du replaceAll() ? und new String("ä") is böse 😱)
 
So müsste es eigentlich funzen:

Code:
         sb = sb.replaceAll("ä","&");
         
//         großes Ä
         sb = sb.replaceAll("Ä","& Auml;");
         
//         großes Ü
         sb = sb.replaceAll("Ü","Ü");
         
//         kleines ü
         sb = sb.replaceAll("ü;","&");

//         großes Ö
         sb = sb.replaceAll("Ö","Ö");
         
//         kleines ö
         sb = sb.replaceAll("ö","&");

//         scharfes S
         sb = sb.replaceAll("ß","&");

Btw. anstatt :

Code:
this.getContentPane().add(text);

Würde ich das ganze noch mit ner JScrollPane ausstatten:

Code:
this.getContentPane().add(new JScrollPane(text));
 
Btw. Campino: Ist nur ein Zusatz, aber warum machst du das ganze nicht noch mit z.B. JSplitPane. Auf der linken Seite die ursprüngliche Datei, dann über Button oder Menü etc. "Encodieren", auf der rechten Seite dann die überarbeitete Datei anzeigen.

Ist nur so als kleiner Zusatz gedacht...
 
mic_checker hat gesagt.:
Btw. Campino: Ist nur ein Zusatz, aber warum machst du das ganze nicht noch mit z.B. JSplitPane. Auf der linken Seite die ursprüngliche Datei, dann über Button oder Menü etc. "Encodieren", auf der rechten Seite dann die überarbeitete Datei anzeigen.

Ist nur so als kleiner Zusatz gedacht...

Junge, ich will nur nicht ständig & auml; eingeben, ich will keinen Editor proggen...
 
Der Arbeitsaufwand für eine Umstellung wäre (fast) gleich 0, so könntest du wenigstens direkt kontrollieren ob das Programm ordnungsgemäß funktioniert...

Aber musst du ja selber wissen.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben