import java.awt.*; import java.awt.event.*; import java.applet.*; // Beispiel zum Erzeugen einer verketteten Liste mit graphischem Interface. public class Liste_GUI extends Applet { static WeihnachtsbaumNode liste = null; // Listenanfang static final Button button_neu = new Button("Neues Element"); static final Button button_ende = new Button("Programmende"); static final Label status = new Label("Programmstart"); static final Label anzahl = new Label("Keine Elemente in Liste"); static final Font font = new Font("SansSerif", Font.BOLD, 16); final ActionListener aktion_neu = new ActionListener(){ public void actionPerformed(ActionEvent e){ enable_buttons(false); // Bedienelemente abschalten // Hier soll ein neues Element in die Liste eingefügt werden. WeihnachtsbaumNode w = new WeihnachtsbaumNode(); if(liste == null) { // Listenanfang erzeugen liste = w; } else { // neues Element am Ende der Liste einfügen. liste.append(w); } w.weihnachtsbaum.addWindowListener(aktion_anzeigen); status.setText("Neues Element erzeugt."); anzahl.setText(liste.count() + " Elemente"); enable_buttons(true); // Bedienelemente einschalten } }; final ActionListener aktion_ende = new ActionListener(){ public void actionPerformed(ActionEvent e){ enable_buttons(false); // Bedienelemente abschalten // Alle Fenster in der Liste schließen WeihnachtsbaumNode n = liste; while (n != null) { if(n.weihnachtsbaum != null) n.weihnachtsbaum.dispose(); n = n.next; } System.exit(0); // Funktioniert nur bei Standalone-Programm } }; final WindowAdapter aktion_anzeigen = new WindowAdapter(){ // Methode "windowClosed" überschreiben public void windowClosed(WindowEvent e){ // Beim Schließen des Fensters remove() aufrufen. enable_buttons(false); // Bedienelemente abschalten status.setText("Element entfernt."); anzahl.setText(liste.count() + " Elemente"); enable_buttons(true); // Bedienelemente einschalten } }; // Startfunktion, wird beim Start des Applet aufgerufen public void init(){ setFont(font); // Zeichensatz setzen setLayout(new GridLayout(2,2)); // 2x2 Layout // Buttons/Labels einfügen... add(button_neu); add(button_ende); // ActionListener verbinden button_neu.addActionListener(aktion_neu); button_ende.addActionListener(aktion_ende); add(status); add(anzahl); } public static void main(String[] args){ Frame frame = new Frame("Liste_GUI"); // Fenster erzeugen frame.setSize(400,150); // Größe festlegen Liste_GUI applet = new Liste_GUI(); // Applet erzeugen frame.add(applet); // Applet ins Fenster setzen frame.addWindowListener(new WindowAdapter(){ // "Schließen"-Button public void windowClosing(WindowEvent e){ System.exit(0); } }); frame.setVisible(true); // Fenster sichtbar machen applet.init(); // Applet-Startfunktion aufrufen applet.start(); // Wie beim Start im Browser } // Methode zum Ein- oder Ausschalten der Buttons public static void enable_buttons(boolean ein){ button_neu.setEnabled(ein); button_ende.setEnabled(ein); anzahl.setEnabled(ein); status.setEnabled(ein); } }