28.9 Eine Swing GUI zum Keller
 
  Die GUI-Klasse, die gleichzeitig den Keller testet, enthält keine Neuigkeiten, weshalb lediglich der Quelltext vorgestellt wird.
 
Download:
JKellerDemo. java
import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import adt.*;



public class JKellerDemo extends JFrame 

                         implements ActionListener {

  // Anfang Variablen

  JPanel zentrumPanel;

  JTextField eingabePush, ausgabe;

  JButton bPush, bIsEmpty, bPop, bTop;

  Keller keller;

  // Ende Variablen



  public JKellerDemo (String title) {

    // Frame-Initialisierung

    super (title);

    setDefaultCloseOperation(EXIT_ON_CLOSE);

    setSize(300, 200);

    

    Container cp = getContentPane();

    cp.setLayout(new BorderLayout());

    

    zentrumPanel = new JPanel(new GridLayout(2,2,4,4));

    cp.add(zentrumPanel,BorderLayout.CENTER);



    // Anfang Komponenten

    eingabePush = new JTextField("0",12);

    cp.add(eingabePush,BorderLayout.NORTH);

    

    bPush = new JButton("push");

    zentrumPanel.add(bPush);

    bPush.addActionListener(this);

    

    bPop = new JButton("pop");

    zentrumPanel.add(bPop);

    bPop.setEnabled(false);

    bPop.addActionListener(this);

    

    bIsEmpty = new JButton("isEmpty");

    zentrumPanel.add(bIsEmpty);

    bIsEmpty.addActionListener(this);

    

    bTop = new JButton("top");

    zentrumPanel.add(bTop);

    bTop.setEnabled(false);

    bTop.addActionListener(this);

    

    ausgabe = new JTextField("");

    cp.add(ausgabe,BorderLayout.SOUTH);

    ausgabe.setEditable(false);

    

    // Ende Komponenten

    

    keller = new Keller();



    setVisible(true);

  }



  // Anfang Ereignisprozeduren

  public void actionPerformed(ActionEvent e){

    Object obj = e.getSource();



    if (obj == (Object) bPush){

       keller.push(eingabePush.getText());

       bTop.setEnabled(true);

       bPop.setEnabled(true);

       ausgabe.setText(""+ keller.top()+" ist eingekellert!");

    }

    if (obj == bPop){

       ausgabe.setText(""+ keller.top()+

                           " wird vom Keller entfernt!");

       keller.pop();

       if (keller.isEmpty()){

         bPop.setEnabled(false);

         bTop.setEnabled(false);

       }

    }

    if (obj == bIsEmpty){

       if(keller.isEmpty())ausgabe.setText("Der 

                                   Keller ist leer");

       else ausgabe.setText("Der Keller ist nicht leer");

    }

    if (obj == bTop){

       ausgabe.setText("Oberstes Kellerelement ist: "+

                        keller.top());

    }

  }

  // Ende Ereignisprozeduren



  public static void main (String[] args) {

    new JKellerDemo("JKellerDemo");

  }

}
Ausgabe Nach dem Erzeugen einer Instanz des Kellers ist dieser leer, Die GUI erlaubt in diesem Fall nicht, dass die Buttons pop und top gedrückt werden können. Entsprechendes muss zugesichert werden, wenn der Keller geleert wird. Man beachte die entsprechenden Zeilen in der Methode actionPerformed(ActionEvent e). Ist ein Element eingekellert, so ändert sich das Aussehen der Buttons, ein Anklicken führt jetzt zu den gewünschten Ereignissen.

Hier ist im Eingabefeld das Wort 'test' eingegeben und danach das Push-Button gedrückt worden. Das Einkellern wird im Ausgabefeld kommentiert  und die Darstellung der Buttons ändert sich so, dass man erkennt, dass sie jetzt 'aktiv' sind.

 

zu 28.10. Übungen
zur Startseite www.pohlig.de  (C) MPohlig 2004