StackDemo
shows how to use the linear set of objects
//--- 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
Related:
Java Books
Java Certification,
Programming, JavaBean and Object Oriented Reference Books
Return to : Java
Programming Hints and Tips
All the site contents are Copyright © www.erpgreat.com
and the content authors. All rights reserved.
All product names are trademarks of their respective
companies.
The site www.erpgreat.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.erpgreat.com or the content authors.
|