G
Gast
Gast
Hallo,
ich will realisieren, dass der Inhalt, welcher per Copy & Paste in meine JTextArea kopiert wird, automatisch mit der Codepage 437 angezeigt wird. Dazu dachte ich mir, dass ich einfach einen DocumentListener auf das Dokument der TextArea anmelde und dann den soeben eingefügten Inhalt der Textarea duch den kodierten Inhalt ersetze.
Etwa so:
Das Problem ist nun, dass ich einen Fehler bezüglich des writeLocks auf dem Dokument erhalte, weil ich anscheinend versuche, den vom Listener überwachten Bereich zu verändern.
Nun würde ich gerne wissen, ob mein Ansatz komplett falsch ist und wie ich das möglichst geschickt realisieren kann.
Bin für jede Hilfe dankbar.
Vielen Dank im Voraus.
ich will realisieren, dass der Inhalt, welcher per Copy & Paste in meine JTextArea kopiert wird, automatisch mit der Codepage 437 angezeigt wird. Dazu dachte ich mir, dass ich einfach einen DocumentListener auf das Dokument der TextArea anmelde und dann den soeben eingefügten Inhalt der Textarea duch den kodierten Inhalt ersetze.
Etwa so:
Code:
DocumentListener myListener = new DocumentListener() {
public void insertUpdate(DocumentEvent e) {
if(e.getDocument() == txt.getDocument()) {
byte str[] = txt.getText().getBytes();
try {
String neuerText = new String(str, "Cp437");
txt.setText(neuerText); // erzeugt Fehler
}
catch(UnsupportedEncodingException exc) {
core.log("Encoding not supported!");
}
}
}
public void removeUpdate(DocumentEvent e) {}
public void changedUpdate(DocumentEvent e) {}
};
txt.getDocument().addDocumentListener(myListener);
Das Problem ist nun, dass ich einen Fehler bezüglich des writeLocks auf dem Dokument erhalte, weil ich anscheinend versuche, den vom Listener überwachten Bereich zu verändern.
Attempt to mutate in notification at javax.swing.text.AbstractDocument.writeLock(Unknown Source)
Nun würde ich gerne wissen, ob mein Ansatz komplett falsch ist und wie ich das möglichst geschickt realisieren kann.
Bin für jede Hilfe dankbar.
Vielen Dank im Voraus.