# GUI- Klasse mit Hauptklasse "verknüpfen"?



## babuschka (30. Nov 2011)

Hallo Zusammen,
Ich bin noch recht neu mit JAVA beschäftigt und habe nun meine erste GUI zu erstellen...
Das Programm welches "dargestellt" werden soll existiert und funktioniert und besteht aus mehreren Klassen. Für die GUI hatte ich nun geplant eine neue Klasse hinzuzufügen und bin auch eigentlich ganz zufrieden mit dem Ergebnis. Wo ich nun allerdings nicht hinterherkomme ist der Versuch, ActionListener zu integrieren. Ich möchte die Ausgabe eines Array in einem "Anzeigefenster" gestalten und mit Buttons dann den Array sortieren. Ich glaube die Buttons hinzukriegen, allerdings habe ich keinen Plan wie ich die Anzeige in ein "Anzeigefenster" kriege?:bahnhof:
Das ganze ist ein BlueJ- Projekt und die Ausgabe lief bisher auf dem "Canvas"- Fenster was ja bei BlueJ automatisch mit dabei ist und funktioniert...
Hat Jemand eine Idee wo mein Problem liegen könnte? Ich wäre super dankbar über einen Tipp wo ich mich mal einstudieren sollte! Ich würde das ganz gerne allein hinkriegen, fühle mich aber grad auf der Suche nach der berühmten Nadel im Heuhaufen... Falls dies hilfreich ist kann ich auch gerne Code posten... Danke schonmal im voraus!


----------



## Alexiios (30. Nov 2011)

Wenn ich dein Problem richtig verstehe würde ich es mit einem JTextField oder auch JLabel realisieren und dann mit der Methode .setText deinen String reinsetzen...


----------



## babuschka (30. Nov 2011)

Hallo Alexiios!
Ich habe es nun mal mit einem JTextArea versucht und bin mit dem Ergebnis ganz zufrieden... 
Jetzt ist nur noch die Frage wie ich meine Ausgabe in dieses Feld kriege...
aber noch ist die Nacht jung... 
Ich werde meine Fortschritte berichten und vielleicht auch nochmal etwas Hilfe beanspruchen...


----------



## vanny (30. Nov 2011)

Also welche Swing / AWT - komponente du für die Ausgabe benutzt, ist Geschmackssache, ich würde zu JList/ JTable tendieren aber Label oder TextArea tun es ja auch.

Ich habe deine Frage aber so verstanden, dass du mit dem ActionListener nicht ganz klar kommst.
Dieses Forum, google, youtube sind voll von guten Beispielen, daher solltest du einfach mal danach suchen und wenn du was hast, wo der Fehler wirklich im Detail liegt, poste hier Code und dir kann besser geholfen werden.

_zur Ausgabe_
Grundsätzlich haben die Komponenten zur Ausgabe von Text entsprechende setter-Klassen wie setText(); o.ä.


naja teste einfach mal an ein paar simplen Beispielen, dann kommst du bestimmt voran.

Gruß Vanny


----------



## babuschka (1. Dez 2011)

So, ich bin nun etwas weiter gekommen... *jupee!*
Inzwischen funktioniert die Ausgabe wenn ich auf die Buttons clicke, allerdings landet die Ausgabe nicht in meinem JTextArea sondern in der BlueJ-Konsole... Muss ich wirklich die Ausgabe-Methoden komplett umbauen? Ich weiss die Frage ist bestimmt lächerlich einfach, aber ich komm irgendwie trotz mehrstündiger recherche im Netz nicht weiter... Ich bin dankbar um alle tipps! unten mal der Code meiner Hauptklasse...

```
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.*;
import javax.swing.border.*;

import java.util.Iterator;
import java.util.List;
import java.util.Arrays;

import java.io.File;
/**
 * In der Klasse BildFlaeche wird die Grafische Benutzeroberfläche generiert
 * die dem Nutzer dazu dienen soll die Liste der Studenten nach einem bestimmten,
 * auszuwählenden Kriterium zu sortieren.
 * 
 * @author authorFP
 * @version 27.11.2011
 */

public class Kurs
{
    private Student[] studentListe;
    
    private static final String VERSION = "Version 1.0";
    private JFrame fenster;
    private JLabel dateinameLabel;
    private JLabel statusLabel;   
    private JButton firstButton, secondButton, thirdButton, fourthButton;
    private JPanel workspace;
      
    /**
     * Main-Methode, startet das Programm mit dem Befehl zur Ausführung des Konstruktors.
     */
    public static void main (String[] args)
    {
        Kurs kurs = new Kurs();
    }
       
    /**
     * Konstruktor, erzeugt einen Array, füllt diesen mit den Studenten ab und gibt den Array unsortiert aus.
     */
    public Kurs()
    {
        studentListe = new Student[5];// erzeugt einen neuen Array mit 5 Positionen
        // die Studenten werden erzeugt und dem Array angefügt
        studentListe[0] = new Student();
        studentListe[0].setnummer(1);
        studentListe[0].setalter(12);
        studentListe[0].setdurchschnitt(4.3);
        studentListe[0].setname("Walterli Tell junjun.");    
        
        studentListe[1] = new Student();
        studentListe[1].setnummer(2);
        studentListe[1].setalter(467);
        studentListe[1].setdurchschnitt(2.9);
        studentListe[1].setname("Maria Stuart"); 
        
        studentListe[2] = new Student();
        studentListe[2].setnummer(3);
        studentListe[2].setalter(9);
        studentListe[2].setdurchschnitt(5.9);
        studentListe[2].setname("Fritzli Schneider"); 
        
        studentListe[3] = new Student();
        studentListe[3].setnummer(4);
        studentListe[3].setalter(2296);
        studentListe[3].setdurchschnitt(6.0);
        studentListe[3].setname("Archimedes Syrakus"); 
               
        studentListe[4] = new Student();
        studentListe[4].setnummer(5);
        studentListe[4].setalter(20);
        studentListe[4].setdurchschnitt(4.7);
        studentListe[4].setname("Greengrey vonRotz");    
        
        fensterErzeugen();
    }
    
    /**
     * Methode listeAusgebenUnsortiert gibt die Liste unsortiert auf der Konsole aus.
     */
    public void listeAusgebenUnsortiert()
    {
         System.out.println("Liste der Studenten unsortiert: ");// die Liste der Studenten wird ausgegeben, unsortiert
         for(int i=0; i<studentListe.length; i++)
             {
             System.out.println("Studentennummer: " + studentListe[i].getnummer() + ", Name: " + studentListe[i].getname() + 
             ", Alter: " + studentListe[i].getalter() + ", Notendurchschnitt: " + studentListe[i].getdurchschnitt());
             }
         System.out.println("Die gesamte Teilnehmerzahl dieses Kurses beläuft sich auf " + studentListe.length + " Studenten.");// Ausgabe der gesamten Teilnehmerzahl
         System.out.println("--------------------------------------------------------------------------------");
    }

    /**
     * Methode listeAusgebenSortiertAlter gibt den Anstoss zum sortieren der Liste nach Alter
     * und gibt diese auf der Konsole aus.
     */
    public void listeAusgebenSortiertAlter()
    {
         Arrays.sort(studentListe, new alterComparator()); // Gibt den Anstoss zum sortieren nach Alter.
         System.out.println("Studentenliste sortiert nach Alter:");// Gibt die Liste sortiert nach Alter aus.
         for(int i=0; i < studentListe.length; i++)
             {
             System.out.println("Alter: " + studentListe[i].getalter() + ", Name: " + studentListe[i].getname() + ", Notendurchschnitt: " +
             studentListe[i].getdurchschnitt() + ", Studentennummer: " + studentListe[i].getnummer());
             }
         System.out.println("--------------------------------------------------------------------------------");
    }
          
    /**
     * Methode listeAusgebenSortiertName gibt den Anstoss zum sortieren der Liste nach Name
     * und gibt diese auf der Konsole aus.
     */
    public void listeAusgebenSortiertName()
    {
         Arrays.sort(studentListe, new nameComparator()); // Gibt den Anstoss zum sortieren nach Name.
         System.out.println("Studentenliste sortiert nach Name:");// Gibt die Liste sortiert nach Name aus.
         for(int i=0; i < studentListe.length; i++)
             {
             System.out.println("Name: " + studentListe[i].getname() + ", Alter: " + studentListe[i].getalter() + ", Notendurchschnitt: " +
             studentListe[i].getdurchschnitt() + ", Studentennummer: " + studentListe[i].getnummer());
             }
         System.out.println("--------------------------------------------------------------------------------");    
    }
           
    /**
     * Methode listeAusgebenSortiertDurchschnitt gibt den Anstoss zum sortieren der Liste nach Notendurchschnitt
     * und gibt diese auf der Konsole aus.
     */
    public void listeAusgebenSortiertDurchschnitt()
    {
         Arrays.sort(studentListe, new durchschnittComparator()); // Gibt den Anstoss zum sortieren nach Durchschnittsnote.
         System.out.println("Studentenliste sortiert nach Notendurchschnitt:");// Gibt die Liste sortiert nach Durchschnittsnote aus.
         for(int i=0; i < studentListe.length; i++)
             {
             System.out.println("Notendurchschnitt: " + studentListe[i].getdurchschnitt() + ", Alter: " + studentListe[i].getalter() + ", Name: " +
             studentListe[i].getname() + ", Studentennummer: " + studentListe[i].getnummer());
             }
         System.out.println("--------------------------------------------------------------------------------");
    }
    
    /**
     * An example of a method - replace this comment with your own
     * 
     * @param  y   a sample parameter for a method
     * @return     the sum of x and y 
     */
    private void fensterErzeugen()
    {
        // put your code here
        fenster = new JFrame("Studenten Sortierprogramm");
        JPanel contentPane = (JPanel)fenster.getContentPane();
        contentPane.setBorder(new EmptyBorder(6, 6, 6, 6));
        
        menuezeileErzeugen(fenster);
        
        contentPane.setLayout(new BorderLayout(6, 6));
        
        JTextArea workspace = new JTextArea(15,60);
        workspace.setLineWrap(true);
        workspace.setBorder(new EtchedBorder());
        workspace.setWrapStyleWord(true);
        workspace.setTabSize(5);
        workspace.setText("");
        contentPane.add(workspace, BorderLayout.CENTER);
        
        dateinameLabel = new JLabel();
        contentPane.add(dateinameLabel, BorderLayout.NORTH);
               
        JPanel werkzeugleiste = new JPanel();
        werkzeugleiste.setLayout(new GridLayout(0, 1));
        
        firstButton = new JButton("Ursprungszustand");
        firstButton.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) { listeAusgebenUnsortiert(); }
                    });
        werkzeugleiste.add(firstButton);
        
        secondButton = new JButton("Sortieren nach Alter");
        secondButton.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) { listeAusgebenSortiertAlter(); }
                    });
        werkzeugleiste.add(secondButton);
        
        thirdButton = new JButton("Sortieren nach Name");
        thirdButton.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) { listeAusgebenSortiertName(); }
                    });
        werkzeugleiste.add(thirdButton);
        
        fourthButton = new JButton("Sortieren nach Note");
        fourthButton.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) { listeAusgebenSortiertDurchschnitt(); }
                    });
        werkzeugleiste.add(fourthButton);
        
        JPanel flow = new JPanel();
        flow.add(werkzeugleiste);
        
        contentPane.add(flow, BorderLayout.WEST);
                
        fenster.pack();
        Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
        fenster.setLocation(d.width/2 - fenster.getWidth()/2, d.height/2 - fenster.getHeight()/2);
        fenster.setVisible(true);
    }
    
    private void menuezeileErzeugen(JFrame fenster)
    {
        final int SHORTCUT_MASK = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
        
        JMenuBar menuezeile = new JMenuBar();
        fenster.setJMenuBar(menuezeile);
        
        JMenu menue;
        JMenuItem eintrag;
        
        menue = new JMenu("Datei");
        menuezeile.add(menue);
        
        eintrag = new JMenuItem("Öffnen...");
        menue.add(eintrag);
        
        eintrag = new JMenuItem("Beenden");
        menue.add(eintrag);
        
        menue = new JMenu("Bearbeiten");
        menuezeile.add(menue);
        
        eintrag = new JMenuItem("sortieren");
        menue.add(eintrag);
        
        menue = new JMenu("?");
        menuezeile.add(menue);
        
        eintrag = new JMenuItem("Hilfe");
        menue.add(eintrag);
        
        eintrag = new JMenuItem("Programminformationen");
        menue.add(eintrag);
    }    
}
```


----------



## Fab1 (2. Dez 2011)

Hi,

habs mir mal kurz durchgelesen. Du möchtest nur, dass die Texte statt in der Console zum Beispiel in dem Textarea workspace ausgegeben wird, dann musst du einfach statt den ganzen "System.out.println("");" 

workspace.setText("Hier kommt der Text rein" );
schreiben.

eventuell musst du zwischendrin, den text immer anhängen, musst schauen, da bin ich mir gerade nicht sicher.

allerdings ist das JTextArea workspace momentan von den anderen Methoden nicht aufrufbar. Musst dann einfach als Instanzvariable (Eigenschaft) oben deklarieren, dann kannst du von allen Methoden darauf zugreifen.


----------



## Javaspast 3000 (2. Dez 2011)

den action listener zu implemetieren ist einfach ganz leicht (so weit ich das mitbekommen habe, hast du noch keine fixe antwort hierauf bekommen):

einfach zu beginn der klasse, den actionListener via implement implementieren und die gewünschten buttons registrieren:


```
public class meineGUI extends JFrame implements ActionListener
{
...

zuRegistrierenderButton.addActionListener(this);
}
```

nach dem du den actionlistener implemetiert hast, musst du die methode actionPerformed überschreiben:


```
public void actionPerformed(ActionEvent meinEvent) 
	{
		String event = meinEvent.getActionCommand();
                //hier castest du das actionCommand auf einen String
		
		if (event.equals("Name bzw. Text des Buttons"))
		{
                        workspace.setText("my text");
                        //mit diesem befehl einfach den gewünschten text ins JTextField schreiben
		}
	}
```

somit müsste es ganz einfach funktionieren 

LG


----------



## Fab1 (2. Dez 2011)

> Inzwischen funktioniert die Ausgabe wenn ich auf die Buttons clicke, allerdings landet die Ausgabe nicht in meinem JTextArea sondern in der BlueJ-Konsole...



Dem Satz hab ich entnommen, Buttons funktionieren, machen nur nicht das was sie sollen


----------



## babuschka (2. Dez 2011)

Fab1 hat gesagt.:


> " dann musst du einfach statt den ganzen "System.out.println("");"
> 
> workspace.setText("Hier kommt der Text rein" );
> schreiben.



Hej!
Genau auf so einen Hinweis habe ich gehofft! super!!!
Nun habe ich aber das Problem, dass mir der Compiler die folgende Fehlermeldung ausspuckt:
"cannot find symbol - method setText(java.lang.String)"
woran kann das liegen? ich hab das Gefühl ich steh komplett auf dem Schlauch...
(ich hab doch workspace initialisiert und ne ganze Zeile an imports? )

@Javaspast 3000: deine Erklärungen sind zwar gut verständlich, allerdings scheint es mir zu komliziert meine Klasse komlett um zu bauen und beim versuch "extends JFrame etc..." hat mir der Compiler einen Fehler nach dem anderen ausgespuckt... Trotzdem Danke!


----------



## Fab1 (2. Dez 2011)

Mir fällt gerade auf du hast 2 mal die Variable workspace, einmal beim JPanel ganz oben in den Instanzvariablen und einmal in der Methode fensterErzeugen()

Ich würde eine auf alle Fälle umbenennen und die Deklaration von der Variablen in der fensterErzeugen Methode dann als Instanzvariable oben draufpacken.

So ungefähr:


```
public class Kurs
{
    private Student[] studentListe;
    
    private static final String VERSION = "Version 1.0";
    private JFrame fenster;
    private JLabel dateinameLabel;
    private JLabel statusLabel;   
    private JButton firstButton, secondButton, thirdButton, fourthButton;
    private JPanel workspace;  
    private JTextArea areaTextAusgabe;  // hab dein JTextArea einfach mal umbenannt, dies müsstest du dann natürlich entsprechend in den Methoden aktualisieren.
```

ich nehm mal an, dass dies der Fehler ist, allerdings kann ich es nicht sicher sagen. Hab momentan auch keine Möglichkeit dies zu testen.

Nun kannst du das JTextArea areaTextAusgabe mit areaTextAusgabe.setTest(""); entsprechend in den Methoden aufrufen.


----------



## babuschka (2. Dez 2011)

Das tönt plausibel, ich hab auch die Änderungen direkt übernommen, kann allerdings nicht testen obs nun funktioniert weil mit immer noch die Fehlermeldung wegen des "setText" im Weg steht...
Ich werd da mal weiterbasteln und hoffentlich den Fehler finden...


----------



## Fab1 (2. Dez 2011)

So gerade nochmal geschaut, bei mir kommt kein Fehler zu dem setText();

Evtl, die Posts nochmal durchlesen oder den Code nochmal posten.


----------



## babuschka (2. Dez 2011)

So, ich bin schon wieder am rumsurfen...
@Fab1: Deine Tipps haben super geholfen!
Den Fehler hab ich gefunden, setText wird jetzt akzeptiert... Compiler läuft und gibt keine Fehler an.
Wenn ich dann das Programm starte und mit dem Button die Ausgabe teste gibts mir aber eine Riesen Fehlermeldung an...
nochmal den gesamten, aktuellen Code:

```
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.*;
import javax.swing.border.*;

import java.util.Iterator;
import java.util.List;
import java.util.Arrays;
import java.util.*;

import java.io.File;
/**
 * In der Klasse BildFlaeche wird die Grafische Benutzeroberfläche generiert
 * die dem Nutzer dazu dienen soll die Liste der Studenten nach einem bestimmten,
 * auszuwählenden Kriterium zu sortieren.
 * 
 * @author Franziska Popp
 * @version (a version number or a date)
 */

public class Kurs
{
    private Student[] studentListe;
    
    private static final String VERSION = "Version 1.0";
    private JFrame fenster;
    private JLabel dateinameLabel;
    private JLabel statusLabel;   
    private JButton firstButton, secondButton, thirdButton, fourthButton;
    private JPanel workspace;
    private JTextArea areaTextAusgabe;

      
    /**
     * Main-Methode, startet das Programm mit dem Befehl zur Ausführung des Konstruktors.
     */
    public static void main (String[] args)
    {
        Kurs kurs = new Kurs();
    }
       
    /**
     * Konstruktor, erzeugt einen Array, füllt diesen mit den Studenten ab und gibt den Array unsortiert aus.
     */
    public Kurs()
    {
        studentListe = new Student[5];// erzeugt einen neuen Array mit 5 Positionen
        // die Studenten werden erzeugt und dem Array angefügt
        studentListe[0] = new Student();
        studentListe[0].setnummer(1);
        studentListe[0].setalter(12);
        studentListe[0].setdurchschnitt(4.3);
        studentListe[0].setname("Walterli Tell junjun.");    
        
        studentListe[1] = new Student();
        studentListe[1].setnummer(2);
        studentListe[1].setalter(467);
        studentListe[1].setdurchschnitt(2.9);
        studentListe[1].setname("Maria Stuart"); 
        
        studentListe[2] = new Student();
        studentListe[2].setnummer(3);
        studentListe[2].setalter(9);
        studentListe[2].setdurchschnitt(5.9);
        studentListe[2].setname("Fritzli Schneider"); 
        
        studentListe[3] = new Student();
        studentListe[3].setnummer(4);
        studentListe[3].setalter(2296);
        studentListe[3].setdurchschnitt(6.0);
        studentListe[3].setname("Archimedes Syrakus"); 
               
        studentListe[4] = new Student();
        studentListe[4].setnummer(5);
        studentListe[4].setalter(20);
        studentListe[4].setdurchschnitt(4.7);
        studentListe[4].setname("Greengrey vonRotz");    
        
        fensterErzeugen();
    }
    
    /**
     * Methode listeAusgebenUnsortiert gibt die Liste unsortiert auf der Konsole aus.
     */
    public void listeAusgebenUnsortiert()
    {
         areaTextAusgabe.setText("Liste der Studenten unsortiert: ");// die Liste der Studenten wird ausgegeben, unsortiert
         for(int i=0; i<studentListe.length; i++)
             {
             areaTextAusgabe.setText("Studentennummer: " + studentListe[i].getnummer() + ", Name: " + studentListe[i].getname() + 
             ", Alter: " + studentListe[i].getalter() + ", Notendurchschnitt: " + studentListe[i].getdurchschnitt());
             }
         areaTextAusgabe.setText("Die gesamte Teilnehmerzahl dieses Kurses beläuft sich auf " + studentListe.length + " Studenten.");// Ausgabe der gesamten Teilnehmerzahl
         areaTextAusgabe.setText("--------------------------------------------------------------------------------");
    }

    /**
     * Methode listeAusgebenSortiertAlter gibt den Anstoss zum sortieren der Liste nach Alter
     * und gibt diese auf der Konsole aus.
     */
    public void listeAusgebenSortiertAlter()
    {
         Arrays.sort(studentListe, new alterComparator()); // Gibt den Anstoss zum sortieren nach Alter.
         areaTextAusgabe.setText("Studentenliste sortiert nach Alter:");// Gibt die Liste sortiert nach Alter aus.
         for(int i=0; i < studentListe.length; i++)
             {
             areaTextAusgabe.setText("Alter: " + studentListe[i].getalter() + ", Name: " + studentListe[i].getname() + ", Notendurchschnitt: " +
             studentListe[i].getdurchschnitt() + ", Studentennummer: " + studentListe[i].getnummer());
             }
         areaTextAusgabe.setText("--------------------------------------------------------------------------------");
    }
          
    /**
     * Methode listeAusgebenSortiertName gibt den Anstoss zum sortieren der Liste nach Name
     * und gibt diese auf der Konsole aus.
     */
    public void listeAusgebenSortiertName()
    {
         Arrays.sort(studentListe, new nameComparator()); // Gibt den Anstoss zum sortieren nach Name.
         areaTextAusgabe.setText("Studentenliste sortiert nach Name:");// Gibt die Liste sortiert nach Name aus.
         for(int i=0; i < studentListe.length; i++)
             {
             areaTextAusgabe.setText("Name: " + studentListe[i].getname() + ", Alter: " + studentListe[i].getalter() + ", Notendurchschnitt: " +
             studentListe[i].getdurchschnitt() + ", Studentennummer: " + studentListe[i].getnummer());
             }
         areaTextAusgabe.setText("--------------------------------------------------------------------------------");    
    }
           
    /**
     * Methode listeAusgebenSortiertDurchschnitt gibt den Anstoss zum sortieren der Liste nach Notendurchschnitt
     * und gibt diese auf der Konsole aus.
     */
    public void listeAusgebenSortiertDurchschnitt()
    {
         Arrays.sort(studentListe, new durchschnittComparator()); // Gibt den Anstoss zum sortieren nach Durchschnittsnote.
         areaTextAusgabe.setText("Studentenliste sortiert nach Notendurchschnitt:");// Gibt die Liste sortiert nach Durchschnittsnote aus.
         for(int i=0; i < studentListe.length; i++)
             {
             areaTextAusgabe.setText("Notendurchschnitt: " + studentListe[i].getdurchschnitt() + ", Alter: " + studentListe[i].getalter() + ", Name: " +
             studentListe[i].getname() + ", Studentennummer: " + studentListe[i].getnummer());
             }
         areaTextAusgabe.setText("--------------------------------------------------------------------------------");
    }
    
    /**
     * An example of a method - replace this comment with your own
     * 
     * @param  y   a sample parameter for a method
     * @return     the sum of x and y 
     */
    private void fensterErzeugen()
    {
        // put your code here
        fenster = new JFrame("Studenten Sortierprogramm");
        JPanel contentPane = (JPanel)fenster.getContentPane();
        contentPane.setBorder(new EmptyBorder(6, 6, 6, 6));
        
        menuezeileErzeugen(fenster);
        
        contentPane.setLayout(new BorderLayout(6, 6));
        
        JTextArea workspace = new JTextArea(15,60);
        workspace.setLineWrap(true);
        workspace.setBorder(new EtchedBorder());
        workspace.setWrapStyleWord(true);
        workspace.setTabSize(5);
        contentPane.add(workspace, BorderLayout.CENTER);
        
        dateinameLabel = new JLabel();
        contentPane.add(dateinameLabel, BorderLayout.NORTH);
               
        JPanel werkzeugleiste = new JPanel();
        werkzeugleiste.setLayout(new GridLayout(0, 1));
        
        firstButton = new JButton("Ursprungszustand");
        firstButton.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) { listeAusgebenUnsortiert(); }
                    });
        werkzeugleiste.add(firstButton);
        
        secondButton = new JButton("Sortieren nach Alter");
        secondButton.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) { listeAusgebenSortiertAlter(); }
                    });
        werkzeugleiste.add(secondButton);
        
        thirdButton = new JButton("Sortieren nach Name");
        thirdButton.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) { listeAusgebenSortiertName(); }
                    });
        werkzeugleiste.add(thirdButton);
        
        fourthButton = new JButton("Sortieren nach Note");
        fourthButton.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) { listeAusgebenSortiertDurchschnitt(); }
                    });
        werkzeugleiste.add(fourthButton);
        
        JPanel flow = new JPanel();
        flow.add(werkzeugleiste);
        
        contentPane.add(flow, BorderLayout.WEST);
                
        fenster.pack();
        Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
        fenster.setLocation(d.width/2 - fenster.getWidth()/2, d.height/2 - fenster.getHeight()/2);
        fenster.setVisible(true);
    }
    
    private void menuezeileErzeugen(JFrame fenster)
    {
        final int SHORTCUT_MASK = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
        
        JMenuBar menuezeile = new JMenuBar();
        fenster.setJMenuBar(menuezeile);
        
        JMenu menue;
        JMenuItem eintrag;
        
        menue = new JMenu("Datei");
        menuezeile.add(menue);
        
        eintrag = new JMenuItem("Öffnen...");
        menue.add(eintrag);
        
        eintrag = new JMenuItem("Beenden");
        menue.add(eintrag);
        
        menue = new JMenu("Bearbeiten");
        menuezeile.add(menue);
        
        eintrag = new JMenuItem("sortieren");
        menue.add(eintrag);
        
        menue = new JMenu("?");
        menuezeile.add(menue);
        
        eintrag = new JMenuItem("Hilfe");
        menue.add(eintrag);
        
        eintrag = new JMenuItem("Programminformationen");
        menue.add(eintrag);
    }
}
```

Ich habe den Verdacht, dass irgenwo zu Beginn der Methode "fensterErzeugen()" mein Fehler liegt...
mit welchen Umgebungen arbeitet Ihr? auch BlueJ? oder gibts eine Umgebung die besser/ zu empfehlen ist?
vielen Dank!


----------



## Fab1 (2. Dez 2011)

Als Umgebung verwenden die meisten eclipse und an zweiter Stelle netbeans.

Also was mir noch eingefallen ist, in der Arbeit nicht dran gedacht sry.

Und zwar. Du musst an den JTextAreas immer etwas anhängen. Und mithilfe von "\n" (ACHTUNG: Backslash) machst du einen Zeilenumbruch.

In einem Beispiel:


```
import javax.swing.*;
import java.awt.*;

public class Animate{

	JTextArea text;
	JFrame frame;
	

  public static void main(String args[]) {
    new Animate().los();
	 
  }
  
  public void los(){
	  
	  text = new JTextArea();
	  frame = new JFrame("Test");
	  frame.add(text);
	  frame.setSize(300, 300);
	  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	  
	  text.setText("String1" + "\n");
	  text.append("String2");
	  
	  frame.setVisible(true);
  }
}
```


Also das Fenster sieht ganz Ordentlich aus. Lässt sich bei mir auch ausführen, hab allerdings ein paar Sachen ausgeklammert, da ich z.B. die Klasse Student nicht habe.


----------

