Hallo alle zusammen,
ich hab zwei Probleme mit einem kleinen Applet (LZW Kompressions Demo Applet):
1. Das Applet verwendet einfache Textdateien zur Beispieleingabe. Hier der Code zum Datei öffnen:
Das Problem ist, dass ich unter UNIX mit einer Security Exception abgewiesen werde, was an sich ja nicht so verwunderlich ist (unter win gehts logischerweise):
Ich dachte nur, dass Applets Dateien vom Server lesen können. Hat jemand ne elegante und praktikable Lösung für dieses Problem. Wie gesagt die Textdateien liegen auf dem Server und sollen ausschließlich gelesen werden.
2. Ich benutze ein TextArea in das ein Benutzer Text zum komprimieren eingeben kann. Wenn der Nutzer den Text editiert, soll das Applet resetted werden (interne Datenstrukturen zurück, GUI Reset etc.) Folglich gibt es einen passenden TextListener:
Das Problem ist, dass ich gerne Text in dem TextArea ausgeben möchte, ohne dass der Reset stattfindet. Der TextListener soll nur auf Benutzereingaben reagieren.
Ich habe es mit TextEvent.getID() und TextEvent.getSource() versucht aber daran lassen sich die Events nicht voneinander unterscheiden. (Immer TextChangedEvent und immer vom betreffenden TextArea, was eigentlich auch logisch ist).
Den TextListener zwischendurch abzumelden, ins Textfeld zu schreiben und den Listener wieder anzumelden funktioniert auch nicht, weil die interne Realisierung der API dafür nicht gemacht zu sein scheint. Der TextListener reagiert auf den TextValueChangedEvent auch rückwirkend, also wenn er zur Zeit des "Systemscheibens" im TextArea abgemeldet war.
Ich hoffe sehr mir kann jemand noch ne Idee zur Lösung dieses Problems geben, ich bin mit meinem Anfängerlatein im Moment am Ende.
In diesem Sinne!
ich hab zwei Probleme mit einem kleinen Applet (LZW Kompressions Demo Applet):
1. Das Applet verwendet einfache Textdateien zur Beispieleingabe. Hier der Code zum Datei öffnen:
Code:
//open the File and transform it to a string...
File compStream = new File(compExamplesFilenames[i]);
int compLength= (int)compStream.length();
FileInputStream compFileStream=new FileInputStream(compStream);
byte buffer[]= new byte[(int)compLength];
compLength = compFileStream.read(buffer,0,(int)compLength);
String compString= new String(buffer,0,(int)compLength);
//process string now...
compFileStream.close();
Code:
Exception in thread "AWT-EventQueue-2" java.security.AccessControlException: access denied (java.io.FilePermission HaenselUndGretel.txt read)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkRead(Unknown Source)
at java.io.File.length(Unknown Source)
2. Ich benutze ein TextArea in das ein Benutzer Text zum komprimieren eingeben kann. Wenn der Nutzer den Text editiert, soll das Applet resetted werden (interne Datenstrukturen zurück, GUI Reset etc.) Folglich gibt es einen passenden TextListener:
Code:
private TextListener uncompAreaListener = new TextListener() {
public void textValueChanged(TextEvent arg0) {
//much code
}
};
Ich habe es mit TextEvent.getID() und TextEvent.getSource() versucht aber daran lassen sich die Events nicht voneinander unterscheiden. (Immer TextChangedEvent und immer vom betreffenden TextArea, was eigentlich auch logisch ist).
Den TextListener zwischendurch abzumelden, ins Textfeld zu schreiben und den Listener wieder anzumelden funktioniert auch nicht, weil die interne Realisierung der API dafür nicht gemacht zu sein scheint. Der TextListener reagiert auf den TextValueChangedEvent auch rückwirkend, also wenn er zur Zeit des "Systemscheibens" im TextArea abgemeldet war.
Ich hoffe sehr mir kann jemand noch ne Idee zur Lösung dieses Problems geben, ich bin mit meinem Anfängerlatein im Moment am Ende.
In diesem Sinne!