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