//--- class StackDemo shows how to use the linear set of objects ---//
import java.applet.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
public class StackDemo extends Applet {
//--- Instance variables ---//
Frame f;
//--- Instance methods ---//
public void init ()
{
f = new StackFrame ("Stack"); // instanciate a frame object
f.setSize (200, 150);
f.setResizable (false);
f.show ();
}
public void start ()
{
f.setVisible (true);
repaint ();
}
public void stop ()
{
f.setVisible (false);
}
public void paint (Graphics g)
{
g.drawString ("Ancestor object for the frame", 0, 30);
}
}// end of class StackDemo
//--- class StackFrame ---//
class StackFrame extends Frame {
StackPanel p;
Stack stk;
MessageBox mb;
//--- Constructor ---//
public StackFrame (String title)
{
super (title);
//--- The object to handle action events ---//
ActionListener al = new ActionHandler ();
//--- Instanciate a panel object and add it into the frame ---//
p = new StackPanel (al);
add(BorderLayout.CENTER, p);
//--- Instanciate a message box class ---//
mb = new MessageBox (this, "Stack Message", al);
//--- Instanciate stack class ---//
stk = new Stack ();
//--- anonimous inner class for handling window events ---//
addWindowListener (new WindowAdapter (){
public void windowClosing (WindowEvent e)
{
e.getWindow ().dispose ();
}
});
}
//--- Inner private class StackPanel ---//
private class StackPanel extends Panel {
//--- Instance variables ---//
Label lblTitle;
TextField tfStack;
Button btnPush, btnPop, btnPeek;
//--- Constructor ---//
public StackPanel (ActionListener al)
{
super ();
lblTitle = new Label ("Stack element");
tfStack = new TextField (25);
btnPush = new Button ("Push");
btnPop = new Button ("Pop ");
btnPeek = new Button ("Peek");
add (lblTitle);
add (tfStack);
add (btnPush);
add (btnPop);
add (btnPeek);
btnPush.addActionListener (al);
btnPop.addActionListener (al);
btnPeek.addActionListener (al);
setBackground (Color.green);
}
}// end of class StackPanel
//--- Inner class MessageBox ---//
private class MessageBox extends Dialog {
Label lbl; // text to show in the dialog box
Button btnOK; // botton OK
//--- Constructor ---//
public MessageBox (Frame parent, String title, ActionListener
al)
{
super (parent, title, true); //call the ancestor constructor
and make the dialog box modal
setSize (100, 150);
setBackground (Color.red);
//--- Change the layout and add components into the container
---//
setLayout (new FlowLayout ());
add ( lbl = new Label ());
add ( btnOK = new Button ("OK"));
btnOK.addActionListener (al);
}
//--- Methods ---//
public void showBox (String s)
{
lbl.setText (s);
show ();
}
}// end class MessageBox
//--- Inner class ActionHandler ---//
private class ActionHandler implements ActionListener {
public void actionPerformed (ActionEvent e)
{
Object source = e.getSource ();
String s = p.tfStack.getText ();
if (source == p.btnPush)
{
//--- If the tfStack is not empty than pust its
content into the stack ---//
if (!s.equals (""))
stk.push (s);
p.tfStack.setText ("");
System.out.println ("Push");
p.tfStack.requestFocus ();
}
else if (source == p.btnPop)
{
//--- If the stack is not empty, pop the element
of the stack ---//
if (!stk.empty ())
p.tfStack.setText ((String) stk.pop ());
else
{
p.tfStack.setText ("");
mb.showBox ("Stack is empty");
}
System.out.println ("Pop");
p.tfStack.requestFocus ();
}
else if (source == p.btnPeek)
{
//--- If the stack is not empty, pop the element
of the stack ---//
if (!stk.empty ())
p.tfStack.setText ((String) stk.peek ());
else
{
p.tfStack.setText ("");
mb.showBox ("Stack is empty");
}
System.out.println ("Peek");
p.tfStack.requestFocus ();
}
else if (source == mb.btnOK)
{
mb.dispose ();
}
}
}// end of class ActionHandler
}// end of class StackFrame
Quick Links:
Have Java Problem
Do you have
a Java Question?
Java Books
Java Certification, Programming,
JavaBean and Object Oriented Reference Books
Best Regards,
Java Programming Hints and Tips
All the site contents are Copyright © www.sap-img.com
and the content authors. All rights reserved.
All product names are trademarks of their respective
companies.
The site www.sap-img.com is not affiliated with or endorsed
by any company listed at this site.
Every effort is made to ensure the content integrity.
Information used on this site is at your own risk.
The content on this site may not be reproduced
or redistributed without the express written permission of
www.sap-img.com or the content authors.