Hallo nochmal. Hab hier 2 kleine Probleme.
Problem Nr.1:
Ich habe ein Programm geschrieben, mit dem man seine zu erwartenden Stromkosten ausrechnen kann.
Auf dem Haupt-JFrame ist eine Liste mit Geräten, welche man hinzufügen, bearbeiten und löschen kann.
Wenn ich von diesem JFrame auf den Button "Neues Gerät hinzufügen" klicke, öffnet sich ein weiteres JFrame, in dem ich Name, Verbrauch und Laufzeit eines Gerätes in Textfelder eintragen kann. Beim klick auf einen "gerät speichern" button, erzeugt das Programm eine Textdatei und schreibt den Inhalt der Textfelder in sie rein.
Das alles funktioniert soweit bestens!
Der ActionListener, der zum "Gerät speichern" button gehört, führt neben der Erstellung der Datei, auch eine Methode "aktualisiereListe()" aus. Diese Methode befindet sich aber in der KLasse, in der sich auch das Hauptfenster befindet.
Ich erzeuge also eine neue Instanz der Hauptfenster-klasse und lass dann die Methode ausführen:
Die Methode sieht wie folgt aus:
Die Methode "leseVerzeichnisAus()" so:
Nun aber öffnet sich das Haupt-JFrame (mit aktualisierter liste) nochmal! Nun hab ich also das alte Fenster und das neue!
Woran liegt das????:L
Problem Nr.2:
Außerdem lässt sich das nun erstellte Gerät nicht mehr löschen. Erst, wenn ich das Programm neu geöffnet habe. Ich habe auch versucht die Datei Manuell zu löschen, aber dann wird mir gesagt, dass das Programm sie gerade noch verwendet. Warum?
Hier die Methode zum Schreiben in eine Datei:
Ich würde mich sehr freuen, wenn ihr mir sagen könntet, was ich falsch gemacht habe=)
(Im Anhang hab ich das Programm als .jar File angehängt)
Problem Nr.1:
Ich habe ein Programm geschrieben, mit dem man seine zu erwartenden Stromkosten ausrechnen kann.
Auf dem Haupt-JFrame ist eine Liste mit Geräten, welche man hinzufügen, bearbeiten und löschen kann.
Wenn ich von diesem JFrame auf den Button "Neues Gerät hinzufügen" klicke, öffnet sich ein weiteres JFrame, in dem ich Name, Verbrauch und Laufzeit eines Gerätes in Textfelder eintragen kann. Beim klick auf einen "gerät speichern" button, erzeugt das Programm eine Textdatei und schreibt den Inhalt der Textfelder in sie rein.
Das alles funktioniert soweit bestens!
Der ActionListener, der zum "Gerät speichern" button gehört, führt neben der Erstellung der Datei, auch eine Methode "aktualisiereListe()" aus. Diese Methode befindet sich aber in der KLasse, in der sich auch das Hauptfenster befindet.
Ich erzeuge also eine neue Instanz der Hauptfenster-klasse und lass dann die Methode ausführen:
Java:
//Datei: NeuesGerätFenster.class
Hauptfenster hf = new Hauptfenster();
hf.aktualisiereListe();
Die Methode sieht wie folgt aus:
Java:
//Datei: Hauptfenster.class
public void aktualisiereListe(){
leseVerzeichnisAus();
geräteListeJList.setListData(fileListOhneEndung);
}
Die Methode "leseVerzeichnisAus()" so:
Java:
//Datei: Hauptfenster.class
public void leseVerzeichnisAus(){
//Verzeichnis auslesen:
fileList = dir.list(new FilenameFilter() {
public boolean accept(File d, String name) {
return name.endsWith(".txt");
}
});
endungWeg();
}
Nun aber öffnet sich das Haupt-JFrame (mit aktualisierter liste) nochmal! Nun hab ich also das alte Fenster und das neue!
Woran liegt das????:L
Problem Nr.2:
Außerdem lässt sich das nun erstellte Gerät nicht mehr löschen. Erst, wenn ich das Programm neu geöffnet habe. Ich habe auch versucht die Datei Manuell zu löschen, aber dann wird mir gesagt, dass das Programm sie gerade noch verwendet. Warum?
Hier die Methode zum Schreiben in eine Datei:
Java:
//Datei: DateiHandler.class
public void schreibeInDatei(String name, String verbrauch, String laufzeit, File f){
FileWriter writer;
try {
// new FileWriter(file ,true) - falls die Datei bereits existiert
// werden die Bytes an das Ende der Datei geschrieben
// new FileWriter(file) - falls die Datei bereits existiert
// wird diese überschrieben
writer = new FileWriter(f);
// Text wird in den Strom geschrieben
writer.write(name.replaceAll(" ","_"));
writer.write(System.getProperty("line.separator"));
writer.write(verbrauch);
writer.write(System.getProperty("line.separator"));
writer.write(laufzeit);
//Der Strom wird übertragen und geschlossen
writer.flush();
writer.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
Ich würde mich sehr freuen, wenn ihr mir sagen könntet, was ich falsch gemacht habe=)
(Im Anhang hab ich das Programm als .jar File angehängt)