Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
folgendes:
ich kann mittlerweile meine Arraylist anzeigen lassen, das Problem ist, dass es nur im System.out.print funktioniert. Ich finde einfach keine Möglichkeit die ArrayList im JTestArea anzeigen zu lassen.
[Java]
public void auflisten()
{
// Liste der CDs ausgeben
for(int i=0; i<disk.size(); i++)
{
Wobei du natürlich schon wissen musst, was du eig. anzeigen willst. disk.get(i) holt ja wahrscheinlich ein Disk-Objekt....wenn du nun disk.get(i) schreibst, würde er sich halt das Ergebnis der toString() Methode aus deiner Klasse Disk holen...ansonsten musst du halt disk.get(i).getName() oder watt weiss ich aufrufen
Dieser teil : "[gui.CD" sollte Weg, die anderen [] am besten auch weg, damit ich es Auflisten kann wie unten beschrieben
--> Zusätzlich würde ich gerne auch noch den Platz im Array(ArrayList) wieder geben, also das es evtl so stehen könnte:
1: TITEL
KÜNSTLER
TITELANZAHL
SPIELZEIT
Das Problem bei der Geschichte ist für mich, dass ich per text.appen(mein_zähler); nur die Fehlermeldung bekomme das er "int" nicht wieder geben kann und irgendwie schaffe ich es momentan nicht vom int Wert zum String.
hallo, also irgendwie will das ganze doch nicht so recht.
Ich habe halt per GUI das Menu aufgebaut, durch welche man immer wieder neue "CD"'s in die ArrayList adden kann (disk.add). Aber wenn ich 2 CD erstelle und per
[Java]DB1.erfasseDisk(new CD(t, kuen, anzahl, laenge));[/Java]
diese halt nacheinadner einfüge, wird mir am ENDE nur das letzte eingegebene ausgegeben, so als würde er das Array überschreiben
Außerdem ist die ausgabe nicht nur 1 sondern vermehrfacht.
Soll heißen:
Ich gebe 2 verschiedene CD's ein und bekomme folgendes:
0:
[
Name = Name
Künstler = ICH
Titelanzahl = 1
Spielzeit = 1
,
Name = Name
Künstler = ICH
Titelanzahl = 1
Spielzeit = 1
]1:
[
Name = Name
Künstler = ICH
Titelanzahl = 1
Spielzeit = 1
,
Name = Name
Künstler = ICH
Titelanzahl = 1
Spielzeit = 1
Das Objekt "disk" in Zeile 8 ist eine ArrayList (von daher würde ich persönlich es eher "diskList" nennen). Du musst aber die einzelnen Objekte aus disk ausgeben.
Ausserdem solltest Du Dir diese statischen Variablen und Zugriffe abgewöhnen und setter und getter Methoden verwenden.
Also die Objekte per "get" holen oder wie meinst du das?
Kann es gerade leider net testen, habe den Code gerade nicht bei mir.
[Java]
public void auflisten()
{
jo, funktioniert jetzt richt, nur die ausgabe Objekte an sich sind falsch.
Ich erstelle Beispielsweise 1 neue Cd, dan springt er wieder ins Hauptmenu und ich erstelle noch eine CD. wenn ich dann auf "auflisten klicke, zeigt er mir nur das neuste ein, so als wäre das andere a) nicht übernommen worden, oder es einfach überschriebn wird.
wenn ich dann auf "auflisten klicke, zeigt er mir nur das neuste ein, so als wäre das andere a) nicht übernommen worden, oder es einfach überschriebn wird.
funktioniert jetzt, hatte einfach nicht gechecked, was du meintest "Michael...".
[Java]
String titel;
int spielzeit;
boolean habIch;
String kommentar;
String lieferant2;
[/Java]
in den Methoden wird dann this genutzt, zum überschreiben.
DANKE!
vorher hatte ich die toString Methode nur 1 mal in der CD-Klasse, aber da ich ja auch noch DVD und BluRay habe, sollte ich die dann da nicht auch überschreiben, bzw sie evtl in der DISK (Mutterklasse) überschreiben?
disk ist die ArrayList, welche sich in Klasse Datenbank befindet:
Java:
class Datenbank implements Serializable {
ArrayList <Disk> disk;
int p;
//private int laufende_nr_disk;
public Datenbank(){
disk = new ArrayList<Disk>();
}
public void erfasseDisk(Disk dieDisk){
disk.add(dieDisk);
}
public int getArraySize(){
return disk.size();
}
public void auflisten(){
// Liste der CDs ausgeben
for(int i=0; i<disk.size(); i++){
System.out.println("Arraynummer: "+i+"\n");
if(disk.get(i) != null){
disk.get(i).ausgeben();
System.out.println();
}
}
}
public void Eintragloeschen( int nummer ){
disk.remove( nummer );
}
}
es hatte ja so auch eigentlich immer funktioniert, nur irgendwie jetzt nimma -.-
also ich kann ja komplett alles machen in der GUI, also jeden Button klicken, und diese tun dann auch das, wass sie sollen, nur der Teil mit zeigeListe() funktioniert net...
Also eig. machts jetzt gar keinen Sinn mehr da jetzt irgendwie das Ding zum Laufen zu bringen meiner Meinung nach, aber okay:
1. Problem:
in der actionPerformed() wenn Button 4 gedrückt wird willst du die Liste ausgeben, danach rufst du allerdings in Zeile 321 aber direkt auch wieder das Hauptmenü auf! (hauptMenu())
...In hauptmenu setzt du ja aber den text der Textarea wieder auf einen leeren String zu Beginn (Zeile 69) so dass die Ausgabe der Liste danach ja direkt wieder überschrieben wird
2. Problem: listeZeigen()
probiers mal so
Java:
public void listeZeigen() {
for (int i = 0; i < db.disk.size(); i++) {
text.append(i + ":\n" + db.disk.get(i).toString());
System.out.println(i + ":\n" + db.disk.get(i).toString());
}
}
also zu 1)
jo, aber ich habe zuerst das hauptMenu aufgerufen und danach erst die Liste, sodass erstmal alles aus dem Fenster gelöscht wird und dann unter das Menu die Liste geschrieben wird.
(Das funktioniert auch )
2)
Das funktioniert soweit, ABER leider nicht im Textfield, sondern nur durch System.out.print...
also zu 1)
jo, aber ich habe zuerst das hauptMenu aufgerufen und danach erst die Liste, sodass erstmal alles aus dem Fenster gelöscht wird und dann unter das Menu die Liste geschrieben wird.
(Das funktioniert auch )
Nein, schau dir mal deine Klasse Menu an -> Zeile 320:
Java:
listeZeigen();
hauptMenu();
Was passiert also?
listeZeigen() --> schreibt irgendwas ins Textfeld !
hauptmenu() --> Zeile 69 --> text.setText(""); löscht das also wieder und printet danach das Menü! Also siehst du die Ausgabe die listeZeigen() gemacht hat nicht ! (lösche testweise einfach mal in der actionPerformed die Zeile wo du das Menü aufrufst!!! (Zeile 321))
hatte die ganze Zeit auf ne andere zeile geschaut :noe:
funktioniert jetzt alles
neue Frage:
wenn ich jetzt meine ArrayList in eine txt datei oder änlich speichern will, dann erstellt er mir ne Datei, aber beim Laden sagt er mir immer das es nicht funktioniert:
java.lang.ClassCastException: java.lang.String cannot be cast to java.util.ArrayList
Methode zum Laden:
Java:
for(int i=0; i<db.disk.size(); i++){
db.disk.remove(i);
}
ObjectInputStream is = new ObjectInputStream(new FileInputStream("dome.ser"));
db.disk = (ArrayList<Disk>) is.readObject();
System.out.println("\t|| Die Liste wurde geladen ||");
is.close();
ja, output habe ich auch schon drinne ... sonst könnte ichs ja net speichern
Java:
ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream("dome.ser"));
for(int i=0; i<db.disk.size(); i++)
{
//os.writeObject(db.disk.get(i));
os.writeObject(db.disk.get(i).toString());
}
os.close();
System.out.println("\t|| Die Liste wurde im Hauptverzeichniss gespeichert ||");
}
catch (Exception ex){
System.out.println("\n\t\t|| Datei konnte nicht gespeichert werden! ||\n"+ex);
}
Naja so serialisierst du nur Strings
ArrayList implementiert serializable, also kannst du auch direkt die ArrayList serialisieren!
also einfach nur [c]os.writeObject(db.disk)[/c] (sollte gehen?!)