# ArrayList im JTextArea anzeigen lassen



## blumenpeter (26. Jan 2010)

Hallo,

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++)
      {

          System.out.println("Arraynummer: "+i+"\n");
          if(disk.get(i) != null)

          {

              disk.get(i).ausgeben();
              System.out.println();   
          }

      }
}[/Java]


----------



## eRaaaa (26. Jan 2010)

Naja, die TextArea hat eine Methode setText oder append()..mit der du halt den Text setzen/anhängen kannst..das musst du halt aufrufen.


```
area.append(disk.get(i)+System.getProperty("line.separator"));
```

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


----------



## blumenpeter (26. Jan 2010)

hmm
also, da ich das noch nicht gut kann, verzeiht mir bitte meine Anfängerfehler

soo habe nun folgende Methode geschrieben, um alle Objekte aus der ArrayList zu bekommen:

[Java]public void listeZeigen(){

        for(int i=0; i<DB1.disk.size(); i++)
        {
            text.append(DB1.disk.get(i)+System.getProperty("line.separator"));
        }
    }[/Java]
[Java]public void listeZeigen(){

        for(int i=0; i<DB1.disk.size(); i++)
        {
            text.setText(DB1.disk.get(i)+System.getProperty("line.separator"));
        }
    }[/Java]

Leider funktioniert das nicht, ich bekomme zwar etwas in mein TextArea aber es ist folgendes:
gui.CD@127734f (bei beiden möglichkeiten)

eingegeben habe ich(falls es noch nicht geschrieben wurde: es sind 2 verschiedene Klassen):

[Java]
public void cdErstellen(){

        //JOptionPane.showInputDialog("Bitte Passwort eingeben", "Bitte Passwort eingeben");
        System.out.println("cdErstellen");

        t = JOptionPane.showInputDialog("Titel der CD angeben", "TITEL");
        kuen = JOptionPane.showInputDialog("Künstler angeben", "KÜNSTLER");
        while(anzahlc<2){
            try{
                anzahl = Integer.parseInt(JOptionPane.showInputDialog("die Anzahl der Titel angeben", "ANZAHL"));
                anzahlc = 2;
            }
            catch(Exception e){
                    text.append("Bitte geben Sie bei \"die Anzahl der Titel angeben\" " +
                            "\nnur Zahlen ein");
                    anzahlc = 1;
            }
        }

        laenge = Integer.parseInt(JOptionPane.showInputDialog("Länge der CD in Minuten", "LÄNGE"));

        DB1.erfasseDisk(new CD(t, kuen, anzahl, laenge));
        hauptMenu();

    }[/Java]

aber soweit war ich bis jetzt noch nicht


----------



## eRaaaa (26. Jan 2010)

blumenpeter hat gesagt.:


> Leider funktioniert das nicht, ich bekomme zwar etwas in mein TextArea aber es ist folgendes:
> gui.CD@127734f



Das war ja das was ich zuvor sagte, du musst in deiner Klasse(CD), die toString-Methode überschreiben, 
Infos dazu gibts unter anderem hier:

Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 10.2 Object ist die Mutter aller Klassen

Oder aber du erstellst Zugriffsmöglichkeiten um an die Attribute des Objektes zu kommen(getter-Methoden, z.B. getTitle() usw.) und rufst diese auf...

Du könntest ja auch mal deine Klasse CD zeigen  (allerdings den Artikel trotzdem mal lesen!! ;D )


----------



## blumenpeter (27. Jan 2010)

Hi eRaaaa,

super Link, habe es einfach mal probiert so zu machen, wie ich es verstanden habe, und klappt 

[Java]
@Override
    public String toString()
    {
        return getClass().getName() + "[name=" + Disk.titel + ",künstler=" + kuenstler + "\n,titelanzahl" + titelanzahl + ", spielzeit" + Disk.spielzeit + "]";
    }
[/Java]

Das Problem hierbei ist halt nur, dass ich folgendes bekomme:

[gui.CD[name=TITEL,künstler=KÜNSTLER,titelanzahl=10, spielzeit=10]]

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.


----------



## Michael... (27. Jan 2010)

blumenpeter hat gesagt.:


> [Java]
> @Override
> public String toString()
> {
> ...


Na das hast Du doch selbst in der Hand ;-)

```
return "name=" + Disk.titel + ", künstler=" + kuenstler + "\n, titelanzahl" + titelanzahl + ", spielzeit" + Disk.spielzeit;
```
Und Zahlen kann man q&d so anhängen:

```
text.appen(mein_zähler + ": ");
```


----------



## blumenpeter (27. Jan 2010)

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
> ...





Klasse Menu (GUI)
[Java]
public void cdErstellen(){

        //System.out.println("cdErstellen");

        t = JOptionPane.showInputDialog("Titel der CD angeben", "TITEL");
        kuen = JOptionPane.showInputDialog("Künstler angeben", "KÜNSTLER");
        while(anzahlc<2){
            try{
                anzahl = Integer.parseInt(JOptionPane.showInputDialog("die Anzahl der Titel angeben", "ANZAHL"));
                anzahlc = 2;
            }
            catch(Exception e){
                    text.append("Bitte geben Sie bei \"die Anzahl der Titel angeben\" " +
                            "\nnur Zahlen ein");
                    anzahlc = 1;
            }
        }

        laenge = Integer.parseInt(JOptionPane.showInputDialog("Länge der CD in Minuten", "LÄNGE"));

        DB1.erfasseDisk(new CD(t, kuen, anzahl, laenge));
        hauptMenu();



    }


public void listeZeigen(){

        //arraygroese=0;

        for(int i=0; i<DB1.disk.size(); i++)
        {
            //text.setText(arraygroese.toString();
            text.append(i+":\n"+DB1.disk.toString());
            //System.out.println(i+":\n"+DB1.disk.toString());
            // arraygroese++;
         }
    }
[/Java]

Klasse CD
[Java]
public class CD extends Disk{


    static String kuenstler;
    static int titelanzahl;



    public CD(String einTitel, String derKuenstler, int stuecke, int dieSpielzeit)
    {
        super(einTitel, dieSpielzeit);

        kuenstler = derKuenstler;
        titelanzahl = stuecke;
        habIch = false;
        kommentar = "<kein Kommentar>";
    }

    @Override
    public String toString()
    {
        return "\nName = " + Disk.titel+"\n" + "Künstler = " + kuenstler+"\n" + "Titelanzahl = " + titelanzahl+"\n" + "Spielzeit = " + Disk.spielzeit+"\n\n";
    }


    public String gibKuenstler(){

        return kuenstler;

    }

    public int gibTitelanzahl(){

        return titelanzahl;

    }



    @Override
    public void ausgeben()
    {
        System.out.print("CD: " + titel + " (" + spielzeit + " Min)");
        super.ausgeben();
        System.out.println("    " + "Künstler: " + kuenstler);
        System.out.println("    Titelanzahl: " + titelanzahl);

    }

    @Override
    protected void setzeKommentar(String kommentar)
    {
        this.kommentar=kommentar;
    }

    @Override
    protected void setzeVorhanden(boolean vorhanden)
    {
        habIch = vorhanden;
    }
}
[/code]


Disk Klasse

```
public abstract class Disk {

    static String titel;
    static int spielzeit;
    static boolean habIch;
    static String kommentar;
    String lieferant2;

protected Disk(String einTitel, int dieSpielzeit)
{
    titel = einTitel;
    spielzeit = dieSpielzeit;

}


    protected abstract void setzeKommentar(String kommentar);
    /*{
        this.kommentar=kommentar;
    }*/

    protected String gibtKommentar()
    {
        return kommentar;
    }

    protected abstract void setzeVorhanden(boolean vorhanden);
    /*{
        habIch = vorhanden;
    }*/

    protected boolean gibVorhanden()
    {
     return habIch;
    }

    protected void ausgeben(){
    if(habIch) {
            System.out.println("*");
        } else {
            System.out.println();
        }
         System.out.println("    " + kommentar);

    
    }

}
[/Java]


Database Klasse
[code=Java]
class Database {

    String lieferant;


    static ArrayList <Disk> disk;
    private int laufende_nr_disk;


    public Database()
    {
        disk = new ArrayList<Disk>();


    }
    


    public void erfasseDisk(Disk dieDisk)
    {

        disk.add(dieDisk);

    }


    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 );

}
}
[/Java]
gruß

EDIT: listeZeigen(); ist nun auch oben in der Menu Klasse
```


----------



## Michael... (27. Jan 2010)

blumenpeter hat gesagt.:


> [Java]public void listeZeigen(){
> 
> //arraygroese=0;
> 
> ...


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.


----------



## blumenpeter (27. Jan 2010)

Michael... hat gesagt.:


> Du musst aber die einzelnen Objekte aus disk ausgeben.


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()
    {

      for(int i=0; i<disk.size(); i++)
      {
          if(disk.get(i) != null)
          {
              disk.get(i).ausgeben(); // andere Methode
              System.out.println();
          }
      }
    }
[/Java]


----------



## Zenic (28. Jan 2010)

Ja mit get(i) das Objekt aus der Liste nehmen und ausgeben. Also so sieht dein angepasster Code von oben aus.


```
public void listeZeigen(){
 
        for(int i=0; i<DB1.disk.size(); i++)
        {
            text.append(i+":\n"+DB1.disk.get(i).toString());
         }
    }
```

Aber wie schon gesagt solltest du eine get- Methode für die Liste schreiben und ihr vielleicht einen anderen Namen geben.


----------



## blumenpeter (28. Jan 2010)

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.

Hat wer ne Idee?


----------



## Zenic (29. Jan 2010)

Erstellst du die ArrayList vielleicht nach jedem Eintrag neu bzw. wird sie im hauptMenu() angelegt?


----------



## Michael... (29. Jan 2010)

blumenpeter hat gesagt.:


> 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.


Ich vermute mal es wird mehrfach das selbe ausgegeben ??

Du hast die ganzen Variablen statisch deklariert, was Du aber brauchst sind Objektvariablen


blumenpeter hat gesagt.:


> ```
> public abstract class Disk {
> static String titel;
> static int spielzeit;
> ...


Ich hatte glaube ich bereits erwähnt, das mit den statischen Variablen zu unterlassen ;-)


----------



## blumenpeter (1. Feb 2010)

so,

jetzt habe auch ich es gerafft!

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!


----------



## blumenpeter (15. Feb 2010)

Hi mal wieder,

habe ein einer neuen GUI (GUI2.0) gearbeitet, da der Code nicht so dolle war.

Leider funktioniert jetzt das auslesen der ArrayList (disk) nichtmehr.
Hoffe ihr könnt mich auf den richtigen Pfad bringen.

Aufruf der "listeZeigen()" erfolgt über "public void actionPerformed(ActionEvent ev)"

[Java]
//Button 4 "4" -------------------------------------------------
                try {
                        if (ev.getSource() == b4){

                                        hauptmenuzaehler = 0;
                                        System.out.println("uhbdfhbdlfdffd");
                                        listeZeigen();
                                        hauptMenu();
                                }
                }

//----------------------------------listeZeigen()

public void listeZeigen(){

        for(int i=0; i<getArraySize(); i++)
        {
                text.append(i+":\n"+disk.get(i).toString());
                System.out.println(i+":\n"+disk.get(i).toString());

        } 
}
[/Java]

meine "toString()" sieht wie folgt aus:

[Java]
        @Override
        public String toString(){

return "TYP: CD\n\nName = " + this.getTitel()+"\n" + "Künstler = " + this.kuenstler+"\n" +              "Titelanzahl = " + this.titelanzahl+"\n" + "Spielzeit = " + this.getSpielzeit()+"\n\n";

        }
[/Java]

und noch ne frage:

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?


----------



## eRaaaa (15. Feb 2010)

Und was genau funktioniert jetzt nicht? Was erhältst du denn als Ausgabe?


----------



## blumenpeter (15. Feb 2010)

ahso, ja hatte ich vergessen 

also als ausgabe erhalte ich nix ...

so als wäre die ArrayList nie gefüllt worden.

füllen tue ich bsp so:
[Java]
public void cdErstellen(){

                zaehlercd = 0;
                t = JOptionPane.showInputDialog("Titel der CD angeben", "TITEL");
                kuen = JOptionPane.showInputDialog("Künstler angeben", "KÜNSTLER");

                while(zaehlercd<1){
                        try{
                                anzahl = Integer.parseInt(JOptionPane.showInputDialog("die Anzahl der Titel angeben", "ANZAHL"));
                                zaehlercd = 1;

                        }
                        catch(Exception e){
                                text.append("Bitte geben Sie bei \"die Anzahl der Titel angeben\" " +
                                    "\nnur Zahlen ein");
                                zaehlercd = 0;
                        }
                }

                while(zaehlercd<2){
                        try{
                                laenge = Integer.parseInt(JOptionPane.showInputDialog("Länge der CD in Minuten", "LÄNGE"));
                                zaehlercd = 2;
                        }
                        catch(Exception e){
                                text.append("Bitte geben Sie bei \"Länge der CD\" " +
                                    "\nnur Zahlen ein");
                                zaehlercd = 0;
                        }
                }
                db.erfasseDisk(new Cd(t, kuen, anzahl, laenge));
                this.hauptMenu();
        }[/Java]

und in der CD klasse ist wie gesagt die toString Methode


----------



## eRaaaa (15. Feb 2010)

Was ist denn disk ? Auf welche Liste referenziert das? (das muss natürlich auf die ArrayListe in deiner DB-Klasse referenzieren...tuts das? )


----------



## blumenpeter (15. Feb 2010)

disk ist die ArrayList, welche sich in Klasse Datenbank befindet:


```
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 -.-


----------



## eRaaaa (15. Feb 2010)

die disk meinte ich nicht:

```
public void listeZeigen(){
 
        for(int i=0; i<getArraySize(); i++)
        {
                text.append(i+":\n"+disk.get(i).toString());
                System.out.println(i+":\n"+disk.get(i).toString());
                        
        } 
}
```

diese disk! Am Besten du zeigst mal deinen aktuellen Stand deiner Klassen!


----------



## blumenpeter (15. Feb 2010)

okay:


```
public class Menu extends GUI implements ActionListener, Serializable {


        int löschen;
       

        int login, adminzaehler, scriptstart, zaehlerlogin, hauptmenuzaehler,
                zaehlercd, zaehlerdvd, zaehlerbluray;
        String cp;



        
        int laenge, anzahl;
        String t, kuen, r;



        public Menu(){
                //Konstruktor

        }

        public void setLogin(int login){

                this.login = login;
        }

        public int getLogin(){

                return this.login;
        }

        public void start() {

                super.grundGeruest();                
                
                text.append("Bitte Loggen Sie sich zunächst ein! \n");
                this.setLogin(1);


                b1.setEnabled(false);
                b2.setEnabled(false);
                b4.setEnabled(false);
                b3.setEnabled(false);
                b7.setEnabled(false);
                b8.setEnabled(false);

        }

        public void scriptStart(){

                //Scriptstarten? - Auswahl!
                text.setText("");
                laden.setValue(100);
                
                text.append("# Willkommen #\n");
                
                scroller.getAutoscrolls();
                text.append("\nWollen Sie das Script\n");
                text.append("Starten? JA oder NEIN \n");
                scriptstart = 1;

        }

        public void hauptMenu(){

                //Hauptmenu - Auswahl!
                text.setText("");
                if(this.getArraySize() == 0 && adminzaehler == 0){

                        text.append("######Hauptmenu######" +
                                  
                                  "\n# x = xx xxxxxxxx" +
                                  "\n# x = xxx xxxxxxxxxx" +
                                  "\n# 3 = xxxxxx xxxxxxxx\n#" +
                                  "\n# 4 = Bibliothek anzeigen" );
                                  

                        scroller.getAutoscrolls();
                        b9.setVisible(false);
                        b1.setEnabled(false);
                        b2.setEnabled(false);
                        b3.setEnabled(false);
                        b7.setEnabled(false);

                        hauptmenuzaehler = 1;

                }
                else if(getArraySize() == 0 && adminzaehler == 1){

                        text.append("######Hauptmenu######" +
                                  
                                  "\n# 1 = CD erstellen" +
                                  "\n# 2 = DVD erstellen" +
                                  "\n# 3 = BluRay erstellen\n#" +
                                  "\n# 4 = Bibliothek anzeigen" );
                                  

                        scroller.getAutoscrolls();
                        b9.setVisible(false);
                        b1.setEnabled(true);
                        b2.setEnabled(true);
                        b4.setEnabled(true);
                        b3.setEnabled(true);
                        b7.setEnabled(true);
                        b8.setEnabled(true);

                        hauptmenuzaehler = 2;
                }
                else if(getArraySize() > 0 && adminzaehler == 1){
                        text.append("######Hauptmenu######" +
                                   "
                                   "\n# 1 = CD erstellen" +
                                   "\n# 2 = DVD erstellen" +
                                   "\n# 3 = BluRay erstellen" +
                                   "\n# 4 = Bibliothek anzeigen" +
                                   "\n# 5 = Media löschen" );
                                  

                        scroller.getAutoscrolls();
                        b9.setVisible(true);
                        b1.setEnabled(true);
                        b2.setEnabled(true);
                        b4.setEnabled(true);
                        b3.setEnabled(true);
                        b7.setEnabled(true);
                        b8.setEnabled(true);

                        hauptmenuzaehler = 3;

                }
        }


        public void cdErstellen(){

                zaehlercd = 0;
                t = JOptionPane.showInputDialog("Titel der CD angeben", "TITEL");
                kuen = JOptionPane.showInputDialog("Künstler angeben", "KÜNSTLER");

                while(zaehlercd<1){
                        try{
                                anzahl = Integer.parseInt(JOptionPane.showInputDialog("die Anzahl der Titel angeben", "ANZAHL"));
                                zaehlercd = 1;

                        }
                        catch(Exception e){
                                text.append("Bitte geben Sie bei \"die Anzahl der Titel angeben\" " +
                                    "\nnur Zahlen ein");
                                zaehlercd = 0;
                        }
                }

                while(zaehlercd<2){
                        try{
                                laenge = Integer.parseInt(JOptionPane.showInputDialog("Länge der CD in Minuten", "LÄNGE"));
                                zaehlercd = 2;
                        }
                        catch(Exception e){
                                text.append("Bitte geben Sie bei \"Länge der CD\" " +
                                    "\nnur Zahlen ein");
                                zaehlercd = 0;
                        }
                }
                db.erfasseDisk(new Cd(t, kuen, anzahl, laenge));
                this.hauptMenu();
        }

        public void dvdErstellen(){

                zaehlerdvd = 0;
                //System.out.println("dvdErstellen");

                t = JOptionPane.showInputDialog("Titel der DVD angeben", "TITEL");
                r = JOptionPane.showInputDialog("Regisseur angeben", "REGISSEUR");

                while(zaehlerdvd<4){
                        try{
                                laenge = Integer.parseInt(JOptionPane.showInputDialog("Länge der DVD in Minuten", "LÄNGE"));
                                zaehlerdvd = 4;

                        }
                        catch(Exception e){
                                text.append("Bitte geben Sie bei \"Länge der DVD\" " +
                                          "\nnur Zahlen ein");
                                zaehlerdvd = 0;
                        }
                }

                db.erfasseDisk(new Dvd(t,r, laenge));
                hauptMenu();
        }

        public void blurayErstellen(){

                zaehlerbluray = 0;
                //System.out.println("blurayErstellen");

                t = JOptionPane.showInputDialog("Titel der BluRay angeben", "TITEL");
                r = JOptionPane.showInputDialog("Regisseur angeben", "REGISSEUR");

                while(zaehlerbluray<5){
                        try{
                                laenge = Integer.parseInt(JOptionPane.showInputDialog("Länge der BluRay in Minuten", "LÄNGE"));
                                zaehlerbluray = 5;

                        }
                        catch(Exception e){
                                text.append("Bitte geben Sie bei \"Länge der BluRay\" " +
                                          "\nnur Zahlen ein");
                                zaehlerbluray = 0;
                        }
                }

                db.erfasseDisk(new Bluray(t,r, laenge));
                hauptMenu();
        }

        public void listeZeigen(){
                

                for(int i=0; i<getArraySize(); i++)
                {
                        text.append(i+":\n"+disk.get(i).toString());
                        System.out.println(i+":\n"+disk.get(i).toString());
                        
                }
                
        }


        public void arrayDelete(){

                this.listeZeigen();
                db.disk.remove(löschen = Integer.parseInt(JOptionPane.showInputDialog("Geben Sie die Nummer der \nDsik an", "NUMMER")));
                text.append("Eintrag erfolgreich GELÖSCHT");

                hauptMenu();
                listeZeigen();
        }



        @Override
        public void actionPerformed(ActionEvent ev) {

                //Button 1 "1" ---------------------
                try {
                        if (ev.getSource() == b1){

                                System.out.println("Button 1");

                                if(adminzaehler == 1 && (hauptmenuzaehler == 2 || hauptmenuzaehler == 3)){
                                        hauptmenuzaehler = 0;
                                        this.cdErstellen();
                                }
                        }

                } catch (Exception e){

                        text.append("Fehler im Code!\n" + e);
                }

                //Button 2 "2" --------------
                try {
                        if (ev.getSource() == b2){

                                if(adminzaehler == 1 && (hauptmenuzaehler == 2 || hauptmenuzaehler == 3)){
                                        hauptmenuzaehler = 0;
                                        this.dvdErstellen();
                                }
                                System.out.println("Button 2");
                                //text.append("\nButton \"2\" pressed\n");
                        }

                } catch (Exception e){

                        text.append("Fehler im Code!\n" + e);
                }

                //Button 3 "3" -----------
                try {
                        if (ev.getSource() == b3){

                                if(adminzaehler == 1 && (hauptmenuzaehler == 2 || hauptmenuzaehler == 3)){
                                        hauptmenuzaehler = 0;
                                        this.blurayErstellen();
                                }
                                System.out.println("Button 3");
                                //text.append("\nButton \"3\" pressed\n");
                        }

                } catch (Exception e){

                        text.append("Fehler im Code!\n" + e);
                }

                //Button 4 "4" -----------
                try {
                        if (ev.getSource() == b4){

//                                if(adminzaehler == 1 && hauptmenuzaehler > 1 ){
//                                        hauptmenuzaehler = 0;
//                                        System.out.println("uhbdfhbdlfdffd");
//                                        listeZeigen();
//                                }
//                                //text.append("\nButton \"4\" pressed\n");
//                                else if(adminzaehler == 0 && hauptmenuzaehler < 2){
//
//                                        text.append("\n\nKeine Einträge vohanden!");
//                                        text.append("\nWenden Sie sich an den ADMIN");
//                                        text.append("\noder LADEN sie eine Bibliothek.\n");
//                                        hauptmenuzaehler = 0;
//                                        System.out.println("TEST");
//                                }
//                                if(adminzaehler == 1){
                                        hauptmenuzaehler = 0;
                                        System.out.println("TEST2");
                                        listeZeigen();
                                        hauptMenu();

//                                }

                                
                        
                        }
                        


                } catch (Exception e){

                        text.append("Fehler im Code!\n" + e);
                }

                //Button 5 "JA" -------
                try {
                        if (ev.getSource() == b5 && scriptstart == 1){

                                text.append("\nButton \"JA\" pressed\n");
                                scriptstart = 0;
                                this.hauptMenu();
                        }
                        
                } catch (Exception e){

                        text.append("Fehler im Code!\n" + e);
                }

                //Button 6 "NEIN" -----------
                try {
                        if (ev.getSource() == b6 && scriptstart == 1){

                                text.append("\nButton \"NEIN\" pressed\n");
                                scriptstart = 0;
                                System.exit(1);
                        }

                        
                } catch (Exception e){

                        text.append("Fehler im Code!\n" + e);
                }

                //Button 7 "Speichern" ----------
                try {
                        if (ev.getSource() == b7){

                                   //text.append("\nButton \"Speichern\" pressed\n");
                        }

                } catch (Exception e){

                        text.append("Fehler im Code!\n" + e);
                }

                //Button 8 "Laden" -----------------
                try {
                        if (ev.getSource() == b8){

                                try{
                                        for(int i=0; i<db.getArraySize(); 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();
                                }
                                catch(Exception e){
                                        System.out.println("\n\t\t|| Datei konnte nicht geladen werden! ||\n"+e);
                                }
                                //text.append("\nButton \"Laden\" pressed\n");
                        }

                } catch (Exception e){

                        text.append("Fehler im Code!\n" + e);
                }

                //Button 9 "5" -----------------
                try {
                        if (ev.getSource() == b9){

                                if(adminzaehler == 1 && (hauptmenuzaehler == 2 || hauptmenuzaehler == 3)){
                                        hauptmenuzaehler = 0;
                                        this.arrayDelete();
                                }
                                //text.append("\nButton \"5\" pressed\n");
                        }

                } catch (Exception e){

                        text.append("Fehler im Code!\n" + e);
                }

                //TextField 1 ---------------
                try{
                        if ((ev.getSource() == tf1) && (getLogin() == 1)){

                                c = tf1.getText();
                                laden.setValue(25);
                        
                                if (c.equals("Admin")&& getLogin() == 1) {

                                        text.append("\nGuten Tag Admin, geben Sie Ihr Kennwort ein!\n");
                                        laden.setValue(50);
                                        zaehlerlogin = 1;

                                        while(zaehlerlogin<2){
                                                cp = JOptionPane.showInputDialog("Bitte Passwort eingeben", "Bitte Passwort eingeben");

                                                if (cp.equals("123")){

                                                        text.append("LogIn ERFOLGREICH!\n");
                                                        laden.setValue(75);
                                                        zaehlerlogin = 2;
                                                        adminzaehler = 1;
                                                        this.scriptStart();
                                                }
                                                else{
                                                        text.append("\nFALSCHES KENNWORT - \nbitte neu eingeben\n");
                                                        zaehlerlogin = 1;
                                                }
                                        }
                                }
                                else if(this.login==1 && c.equals("Gast")|| c.equals("Guest")
                                        && this.login==1 || c.equals("guest") && this.login==1|| c.equals("gast") && this.login==1){

                                        text.append("LogIn ERFOLGREICH!\n");
                                        text.append("Für "+c);
                                        zaehlerlogin = 2;
                                        adminzaehler = 0;
                                        this.scriptStart();

                                }
                                 else if (this.login==1) {
                                        text.append("\nFALSCHER benutzername - \nbitte neu eingeben\n");
                                }

                        }
                        
                } catch (Exception e){

                        text.append("Fehler im Code!\n" + getLogin());
                }
        }

}

[/Java]


[code=Java]
public class GUI extends Datenbank implements ActionListener, Serializable{

        JFrame          frame1,frame2;
        JTextArea       text;
        JTable          table;
        JPanel          panel,panel2;
        JButton         b1,b2,b3,b4,b5,b6,b7,b8,b9;
        JScrollPane     scroller;
        JTextField      tf1;
        JProgressBar    laden;

        String c;

        Datenbank db = new Datenbank();

        public GUI(){
        //Konstruktor
                
        }

        public void grundGeruest(){

                frame1 = new JFrame();
                frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame1.setBackground(Color.WHITE);

                panel = new JPanel();
                panel2 = new JPanel();
                panel.setBackground(Color.WHITE);
                panel2.setBackground(Color.WHITE);

                laden = new JProgressBar();
                laden.setMaximum(100);
                laden.setMinimum(0);
                laden.setValue(0);


                b1=ButtonFactory("   1   ");
                b2=ButtonFactory("   2   ");
                b3=ButtonFactory("   3   ");
                b4=ButtonFactory("   4   ");
                b5=ButtonFactory("  JA  ");
                b6=ButtonFactory("  NEIN  ");
                b7=ButtonFactory("Speichern");
                b8=ButtonFactory(" Laden ");

                b9 = new JButton("   5  ");
                b9.addActionListener(this);
                b9.setAlignmentX(JButton.CENTER_ALIGNMENT);
                b9.setMaximumSize(new Dimension(Integer.MAX_VALUE, b9.getMaximumSize().height));
                b9.setVisible(false);


                panel.add(b1);
                panel.add(b2);
                panel.add(b3);
                panel.add(b4);
                panel.add(b9);
                panel.add(b5);
                panel.add(b6);
                panel.add(b7);
                panel.add(b8);

                text = new JTextArea(10, 20);
                text.setLineWrap(true);
                tf1 = new JTextField(c);
                tf1.setText("ANMELDENAME HIER REIN!");
                tf1.selectAll();
                tf1.requestFocus();
                tf1.addActionListener(this);
                tf1.setMaximumSize(new Dimension(Integer.MAX_VALUE, tf1.getMaximumSize().height));
                scroller = new JScrollPane(text);
                scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
                scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
                panel2.add(scroller);
                panel2.add(laden);
                panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
                panel2.setLayout(new BoxLayout(panel2, BoxLayout.Y_AXIS));
                frame1.getContentPane().add(BorderLayout.WEST, panel);
                frame1.getContentPane().add(BorderLayout.EAST, panel2);
                frame1.getContentPane().add(BorderLayout.SOUTH, tf1);
                frame1.setSize(350, 500);
                frame1.setVisible(true);



        }


        public JButton ButtonFactory(String buttonName){

                JButton button = new JButton(buttonName);
                button.addActionListener((ActionListener) this);
                button.setAlignmentX(JButton.CENTER_ALIGNMENT);
                button.setMaximumSize(new Dimension(Integer.MAX_VALUE, button.getMaximumSize().height));
                return button;
        }

        public void actionPerformed(ActionEvent ev) {


        }

}
[/Java]

[code=Java]
class Datenbank implements Serializable {

        ArrayList <Disk> disk;
        int p;
        
        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 );
        }

}
[/Java]
[code=Java]
public class Disk implements Serializable{

        private String titel;
        private int spielzeit;
        private boolean habIch;
        private String kommentar;
                

        public Disk(String einTitel, int dieSpielzeit){

                this.setTitel(einTitel);
                this.setSpielzeit(dieSpielzeit);

        }

        public String getTitel(){

                return this.titel;
        }

        public void setTitel(String titel){

                this.titel = titel;
        }

        public void setSpielzeit(int spielzeit){

                this.spielzeit = spielzeit;
        }

        public int getSpielzeit(){

                return spielzeit;
        }

        public void setHabich(boolean habIch){

                this.habIch = habIch;
        }

        public boolean getHabich(){

                return this.habIch;
        }

        public String getKommentar() {

                return this.kommentar;
        }

        public void setKommentar(String kommentar) {

                this.kommentar = kommentar;
        }

        public void ausgeben(){

                if(getHabich()) {

                        System.out.println("*");

                } else {

                        System.out.println();
                }

                System.out.println("    " + getKommentar());
        }

}
[/Java]

die 3 Klassen die von "class Disk" erben kommen im nächsten Post
```


----------



## blumenpeter (15. Feb 2010)

sry wegen doppelpost, hätte aber sonst net gepasst-.-


```
import java.io.*;

public class Cd extends Disk implements Serializable{

        String kuenstler;
        int titelanzahl;


        public Cd(String einTitel, String derKuenstler, int stuecke, int dieSpielzeit){

                super(einTitel, dieSpielzeit);

                setKuenstler(derKuenstler);
                this.setTitelanzahl(stuecke);
                this.setHabich(false);
                this.setKommentar("<kein Kommentar>");
        }

        @Override
        public String toString(){

               return "TYP: CD\n\nName = " + this.getTitel()+"\n" + "Künstler = " + this.kuenstler+"\n" + "Titelanzahl = " + this.titelanzahl+"\n" + "Spielzeit = " + this.getSpielzeit()+"\n\n";
                //return this.titel;
        }

        public String getKuenstler(){

                return this.kuenstler;
        }

        public void setKuenstler(String kuenstler){

                this.kuenstler = kuenstler;
        }

        public void setTitelanzahl(int titelanzahl){

                this.titelanzahl = titelanzahl;
        }

        public int getTitelanzahl(){

                return this.titelanzahl;
        }

        
        @Override
        public void ausgeben(){

                System.out.print("CD: " + this.getTitel() + " (" + this.getSpielzeit() + " Min)");
                super.ausgeben();
                System.out.println("    " + "Künstler: " + this.getKuenstler());
                System.out.println("    Titelanzahl: " + this.getTitelanzahl());

        }

}
```



```
public class Dvd extends Disk {


        String regisseur;


        public Dvd(String einTitel, String dieRegie, int dieSpielzeit)
        {
                super(einTitel, dieSpielzeit);
                this.setRegisseur(dieRegie);
                this.setHabich(false);
                this.setKommentar("<kein Kommentar>");
        }

        public String getRegisseur(){

                return this.regisseur;
        }

        public void setRegisseur(String regisseur){

                this.regisseur = regisseur;
        }

//    @Override
//    public String toString()
//    {
//        return "TYP: DVD\n\nName = " + this.getTitel()+"\n" + "Künstler = " + this.getRegisseur()+"\n" + "Spielzeit = " + this.getSpielzeit()+"\n\n";
//    }

        @Override
        public void ausgeben()
        {
                System.out.print("DVD: " + this.getTitel() + " (" + this.getSpielzeit() + " Min)");
                super.ausgeben();
                System.out.println("   " + "Regisseur: " + this.getRegisseur());

        }
}
```



```
public class Bluray extends Disk{

        String regisseur;

        public Bluray(String einTitel, String dieRegie, int dieSpielzeit)
        {
                super(einTitel, dieSpielzeit);
                this.setRegisseur(dieRegie);
                this.setHabich(false);
                this.setKommentar("<kein Kommentar>");
        }

        public String getRegisseur(){

                return this.regisseur;
        }

        public void setRegisseur(String regisseur){

                this.regisseur = regisseur;
        }
        
//        @Override
//        public String toString()
//        {
//                return "TYP: BluRay\n\nName = " + this.getTitel()+"\n" + "Künstler = " + this.getRegisseur()+"\n" + "Spielzeit = " + this.getSpielzeit()+"\n\n";
//        }

        @Override
        public void ausgeben(){

                System.out.print("BluRay: " + this.getTitel() + " (" + this.getSpielzeit() + " Min)");
                super.ausgeben();
                System.out.println("    " + "Programierer:" + this.getRegisseur());
        }

         }
```


----------



## eRaaaa (15. Feb 2010)

> habe ein einer neuen GUI (GUI2.0) gearbeitet, da der Code nicht so dolle war.


Sorry dass ich das so direkt sage, aber: WTF ? :autsch:
Wieso erweitert GUI--> Datenbank und Menu--> GUI?


Naja jedenfalls machen die Button nichts, aus folgendem Grund: (GUI.java)

```
public JButton ButtonFactory(String buttonName){
 
                JButton button = new JButton(buttonName);
                button.addActionListener((ActionListener) this);
                button.setAlignmentX(JButton.CENTER_ALIGNMENT);
                button.setMaximumSize(new Dimension(Integer.MAX_VALUE, button.getMaximumSize().height));
                return button;
        }
 
        public void actionPerformed(ActionEvent ev) {
 
 
        }
```


vllt doch nochmal lieber etwas :rtfm: :bae:


----------



## blumenpeter (15. Feb 2010)

hmm, aber die Button machen doch was.

Kannst du mir das mit 





> Sorry dass ich das so direkt sage, aber: WTF ?
> Wieso erweitert GUI--> Datenbank und Menu--> GUI?


 nochmal genau erklären?

zu der ButtonFactory:

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...


----------



## eRaaaa (15. Feb 2010)

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 

```
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());
	}
    }
```

so, bin nun Mittag essen ^^


----------



## blumenpeter (15. Feb 2010)

hehehe 

danke erstmal!

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...


guten Hunger!

gruß


----------



## eRaaaa (15. Feb 2010)

blumenpeter hat gesagt.:


> 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:

```
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))



> guten Hunger!



Danke


----------



## blumenpeter (15. Feb 2010)

ahso okay!

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:

```
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();
```


----------



## eRaaaa (15. Feb 2010)

ähhh ich sehe zwar einen InputStream..aber wo ist der ObjectOutputStream? Oder wie speicherst du die Liste in die txt Datei?
--> Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 14.12 Persistente Objekte und Serialisierung

achja, um die Liste zu leeren, reicht es .clear() aufzurufen


----------



## blumenpeter (15. Feb 2010)

ja, output habe ich auch schon drinne ... sonst könnte ichs ja net speichern 


```
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);
                                }
```


----------



## eRaaaa (15. Feb 2010)

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?!)


----------

