|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object java.awt.Component java.awt.Container java.awt.Panel java.applet.Applet javax.swing.JApplet acm.program.Program
public abstract class Program
This class is the superclass for all executable
programs in the acm.program
package. Its principal
role is to unify the concepts of applets and applications in a single
class, although it also provides applications with many other useful
facilities not traditionally available in applications.
In many programming environments, objects that are specific instances
of a Program
subclass will run automatically without any
special action on your part. For maximum portability, you might want
to define a static main
method as described in the comments
for the standard implementation of main
.
Nested Class Summary |
---|
Nested classes/interfaces inherited from class javax.swing.JApplet |
---|
JApplet.AccessibleJApplet |
Nested classes/interfaces inherited from class java.applet.Applet |
---|
Applet.AccessibleApplet |
Nested classes/interfaces inherited from class java.awt.Panel |
---|
Panel.AccessibleAWTPanel |
Nested classes/interfaces inherited from class java.awt.Container |
---|
Container.AccessibleAWTContainer |
Nested classes/interfaces inherited from class java.awt.Component |
---|
Component.AccessibleAWTComponent, Component.BltBufferStrategy, Component.FlipBufferStrategy |
Field Summary | |
---|---|
static String |
CENTER
Constant specifying the center of the container |
static String |
EAST
Constant specifying the east edge of the container |
static String |
NORTH
Constant specifying the north edge of the container |
static String |
SOUTH
Constant specifying the south edge of the container |
static String |
WEST
Constant specifying the west edge of the container |
Fields inherited from class javax.swing.JApplet |
---|
accessibleContext, rootPane, rootPaneCheckingEnabled |
Fields inherited from class java.awt.Component |
---|
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT |
Fields inherited from interface java.awt.image.ImageObserver |
---|
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH |
Constructor Summary | |
---|---|
protected |
Program()
This code initializes the program data structures. |
Method Summary | |
---|---|
void |
actionPerformed(ActionEvent e)
Called when a component (typically a button) is activated. |
void |
add(Component comp,
String region,
Object constraints)
Adds the component to the specified border region with the indicated constraints object. |
void |
addActionListeners()
Adds the program as an ActionListener to every button in
the structure that does not have a listener already. |
void |
addActionListeners(ActionListener listener)
Adds the specified listener to every button in the structure that does not have a listener already. |
void |
addExitHook(Object obj)
Requests that the program call the exit method in the
specified object before exiting. |
protected void |
addImpl(Component comp,
Object constraints,
int index)
Adds the specified component to the content pane using the specified constraints and index. |
protected IOConsole |
createConsole()
Creates the console used by the ConsoleProgram . |
protected IODialog |
createDialogIO()
Creates the dialog used for interaction (primarily by the DialogProgram
class). |
protected ProgramMenuBar |
createMenuBar()
Creates a menu bar for use with the program. |
protected static HashMap<String,String> |
createParameterTable(String[] args)
Creates a hash table containing the parameters specified in the argument list. |
protected JFrame |
createProgramFrame()
Creates the frame containing the program. |
void |
destroy()
Called when the program has been told to destroy itself. |
protected void |
endHook()
Performs class-specific cleanup for the program just after it finishes. |
void |
exit()
Exits from the program. |
protected AppletStub |
getAppletStub()
Retrieves the applet stub. |
protected String[] |
getArgumentArray()
Retrieves the array of arguments passed in from the command line, or null if no arguments are available. |
protected Component |
getBorder(String side)
Returns the component installed as a border on the specified side, which must be one of the constants from BorderLayout (NORTH ,
SOUTH , EAST , WEST ). |
Dimension |
getCentralRegionSize()
Returns the size of the central region. |
IOConsole |
getConsole()
Returns the console associated with this program. |
IODialog |
getDialog()
Returns the dialog used for user interaction. |
int |
getHeight()
Returns the height of the central region. |
IOModel |
getInputModel()
Returns the IOModel used for program input, which will
ordinarily be the console. |
LayoutManager |
getLayout()
Gets the layout manager for the central region of the content pane. |
Thread |
getMainThread()
Returns the thread that is running the main program. |
ProgramMenuBar |
getMenuBar()
Returns the menu bar associated with this program. |
IOModel |
getOutputModel()
Returns the IOModel used for program output, which will
ordinarily be the console. |
String |
getParameter(String name)
Returns the parameter associated with name. |
protected HashMap<String,String> |
getParameterTable()
Retrieves the parameter table. |
Dimension |
getPreferredSize()
Returns the preferred size of the content pane. |
BufferedReader |
getReader()
Returns a BufferedReader whose input comes from the console. |
JPanel |
getRegionPanel(String region)
Gets the JPanel for the specified region. |
protected Object |
getStartupObject()
Retrieves the object that was created when this program was started if that object is something other than a Program . |
String |
getTitle()
Gets the title of this program. |
int |
getWidth()
Returns the width of the central region. |
PrintWriter |
getWriter()
Returns a PrintWriter whose output is directed to the console. |
void |
init()
Specifies the code to be executed as startup time before the run method is called. |
boolean |
isAppletMode()
Returns true if this program is running as an applet in a browser. |
protected boolean |
isStarted()
Checks to see whether this program has started, usually by checking to see whether some pane exists. |
void |
keyPressed(KeyEvent e)
Called when a key is pressed. |
void |
keyReleased(KeyEvent e)
Called when a key is released. |
void |
keyTyped(KeyEvent e)
Called when a key is typed (i.e., pressed and released). |
static void |
main(String[] args)
Every application must either contain a "Main-Class" entry in its manifest file or include a main method that looks like this, where MyClass is the name of the program class: |
boolean |
menuAction(ActionEvent e)
Called whenever a program action is detected in the menu bar. |
void |
mouseClicked(MouseEvent e)
Called when the mouse is clicked. |
void |
mouseDragged(MouseEvent e)
Called when the mouse is dragged with the button down. |
void |
mouseEntered(MouseEvent e)
Called when the mouse enters the source (which may be either a component or a GObject ). |
void |
mouseExited(MouseEvent e)
Called when the mouse exits the source (which may be either a component or a GObject ). |
void |
mouseMoved(MouseEvent e)
Called when the mouse is moved. |
void |
mousePressed(MouseEvent e)
Called when the mouse button is pressed. |
void |
mouseReleased(MouseEvent e)
Called when the mouse button is released. |
void |
pause(double milliseconds)
Delays the calling thread for the specified time, which is expressed in milliseconds. |
void |
print(boolean x)
Makes sure that print can display a boolean . |
void |
print(char x)
Makes sure that print can display a char . |
void |
print(double x)
Makes sure that print can display a double . |
void |
print(float x)
Makes sure that print can display a float . |
void |
print(int x)
Makes sure that print can display an int . |
void |
print(long x)
Makes sure that print can display a long . |
void |
print(Object x)
Makes sure that print can display an Object . |
void |
print(String value)
Displays the argument value on the console, leaving the cursor at the end of the output. |
void |
println()
Advances the console cursor to the beginning of the next line. |
void |
println(boolean x)
Makes sure that println can display a boolean . |
void |
println(char x)
Makes sure that println can display a char . |
void |
println(double x)
Makes sure that println can display a double . |
void |
println(float x)
Makes sure that println can display a float . |
void |
println(int x)
Makes sure that println can display an int . |
void |
println(long x)
Makes sure that println can display a long . |
void |
println(Object x)
Makes sure that println can display an Object . |
void |
println(String value)
Displays the argument value on the console and then advances the cursor to the beginning of the next line. |
boolean |
readBoolean()
Reads and returns a boolean value ( true or false ). |
boolean |
readBoolean(String prompt)
Prompts the user to enter a boolean value, which is returned as the value of this method. |
boolean |
readBoolean(String prompt,
String trueLabel,
String falseLabel)
Prompts the user to enter a boolean value, which is matched against the labels provided. |
double |
readDouble()
Reads and returns a double-precision value from the user. |
double |
readDouble(double low,
double high)
Reads and returns a double-precision value from the user, which is constrained to be within the specified inclusive range. |
double |
readDouble(String prompt)
Prompts the user to enter an double-precision number, which is then returned as the value of this method. |
double |
readDouble(String prompt,
double low,
double high)
Prompts the user to enter an double-precision number, which is then returned as the value of this method. |
int |
readInt()
Reads and returns an integer value from the user. |
int |
readInt(int low,
int high)
Reads and returns an integer value from the user, which is constrained to be within the specified inclusive range. |
int |
readInt(String prompt)
Prompts the user to enter an integer, which is then returned as the value of this method. |
int |
readInt(String prompt,
int low,
int high)
Prompts the user to enter an integer, which is then returned as the value of this method. |
String |
readLine()
Reads and returns a line of input from the console. |
String |
readLine(String prompt)
Prompts the user for a line of input. |
void |
remove(Component comp)
Removes the specified component from the central region. |
void |
remove(int index)
Removes the component at the specified index from the central region. |
void |
removeAll()
Removes all components from the central region. |
void |
repaint()
Forwards repaint to the content pane. |
void |
run()
Specifies the code to be executed as the program runs. |
protected void |
runHook()
Calls the run method in the program. |
protected void |
setAppletStub(AppletStub stub)
Sets the applet stub for this program in a way that makes it possible for clients to retrieve it. |
void |
setBackground(Color color)
Sets the background for the central region of the content pane. |
void |
setConsole(IOConsole console)
Sets the console associated with this program. |
void |
setDialog(IODialog dialog)
Sets the dialog associated with this program. |
void |
setInputModel(IOModel io)
Sets the input model associated with this program. |
void |
setLayout(LayoutManager layout)
Sets the layout manager for the central region of the content pane. |
void |
setOutputModel(IOModel io)
Sets the output model associated with this program. |
void |
setParameter(String name,
String value)
Sets a new value for the named parameter. |
protected void |
setParameterTable(HashMap<String,String> ht)
Sets the parameter table for this program. |
protected void |
setStartupObject(Object obj)
Sets the object that is created when the program is started so that it can be retrieved later by getStartupObject . |
void |
setTitle(String title)
Sets the title of this program. |
void |
showErrorMessage(String msg)
Displays the error message in the standard output model. |
void |
start()
Starts the program when it is running in application mode. |
void |
start(String[] args)
Starts the program using the specified argument list. |
protected void |
startHook()
Performs class-specific initialization for the program just before it starts. |
protected void |
startRun()
Initializes and runs the run method. |
void |
validate()
Forwards validate to the content pane. |
Methods inherited from class javax.swing.JApplet |
---|
createRootPane, getAccessibleContext, getContentPane, getGlassPane, getJMenuBar, getLayeredPane, getRootPane, isRootPaneCheckingEnabled, paramString, setContentPane, setGlassPane, setJMenuBar, setLayeredPane, setRootPane, setRootPaneCheckingEnabled, update |
Methods inherited from class java.applet.Applet |
---|
getAppletContext, getAppletInfo, getAudioClip, getAudioClip, getCodeBase, getDocumentBase, getImage, getImage, getLocale, getParameterInfo, isActive, newAudioClip, play, play, resize, resize, setStub, showStatus, stop |
Methods inherited from class java.awt.Panel |
---|
addNotify |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
public static final String CENTER
public static final String EAST
public static final String NORTH
public static final String SOUTH
public static final String WEST
Constructor Detail |
---|
protected Program()
Method Detail |
---|
public void actionPerformed(ActionEvent e)
actionPerformed
in interface ActionListener
public void add(Component comp, String region, Object constraints)
comp
- The component to be addedregion
- The region of the window (NORTH
, SOUTH
,
EAST
, WEST
, or CENTER
)constraints
- The constraints objectpublic void addActionListeners()
ActionListener
to every button in
the structure that does not have a listener already.
public void addActionListeners(ActionListener listener)
listener
- The ActionListener
to be addedpublic void addExitHook(Object obj)
exit
method in the
specified object before exiting.
protected void addImpl(Component comp, Object constraints, int index)
addImpl
in class JApplet
protected IOConsole createConsole()
ConsoleProgram
. Subclasses can
override this method to create their own console types.
protected IODialog createDialogIO()
DialogProgram
class). Subclasses can override this method to create their own dialog types.
protected ProgramMenuBar createMenuBar()
Program
protected static HashMap<String,String> createParameterTable(String[] args)
name=
value
All other arguments are collected as a tab-separated string and placed
in an entry under the key "ARGS"
. All named parameters
are converted to lower case to preserve the case-insensitive semantics
of getParameter
.
args
- The array of strings passed to the application
HashMap
containing the parameter bindingsprotected JFrame createProgramFrame()
Frame
objectpublic void destroy()
destroy
in class Applet
protected void endHook()
public void exit()
super.exit()
at the end of their processing.
protected AppletStub getAppletStub()
protected String[] getArgumentArray()
null
if no arguments are available.
protected Component getBorder(String side)
BorderLayout
(NORTH
,
SOUTH
, EAST
, WEST
).
side
- The side (NORTH
, SOUTH
, EAST
,
or WEST
)
public Dimension getCentralRegionSize()
public IOConsole getConsole()
IOConsole
object used for this programpublic IODialog getDialog()
IODialog
object used for this programpublic int getHeight()
getHeight
in class Component
public IOModel getInputModel()
IOModel
used for program input, which will
ordinarily be the console.
IOModel
used for program inputpublic LayoutManager getLayout()
getLayout
in class Container
public Thread getMainThread()
public ProgramMenuBar getMenuBar()
createMenuBar
factory method.
public IOModel getOutputModel()
IOModel
used for program output, which will
ordinarily be the console.
IOModel
used for program outputpublic String getParameter(String name)
getParameter
in class Applet
name
- The name of the parameter
null
if noneprotected HashMap<String,String> getParameterTable()
public Dimension getPreferredSize()
getPreferredSize
in class Container
public BufferedReader getReader()
BufferedReader
whose input comes from the console.
Reader
for use with this consolepublic JPanel getRegionPanel(String region)
JPanel
for the specified region.
region
- The region of the window (NORTH
, SOUTH
,
EAST
, WEST
, or CENTER
)
JPanel
for that subregionprotected Object getStartupObject()
Program
. In
the normal case of running a Program
object, this method
will return null
.
public String getTitle()
public int getWidth()
getWidth
in class Component
public PrintWriter getWriter()
PrintWriter
whose output is directed to the console.
PrintWriter
for use with this consolepublic void init()
run
method is called. Subclasses can override this
method to perform any initialization code that would ordinarily
be included in an applet init
method. In general,
subclasses will override init
in GUI-based programs
where the program simply sets up an initial state and then waits
for events from the user. The run
method is required
for applications in which there needs to be some control thread
while the program runs, as in a typical animation.
init
in class Applet
public boolean isAppletMode()
true
if this program is running as an applet in a browser.
true
if this program is running as an applet, false
otherwiseprotected boolean isStarted()
public void keyPressed(KeyEvent e)
keyPressed
in interface KeyListener
public void keyReleased(KeyEvent e)
keyReleased
in interface KeyListener
public void keyTyped(KeyEvent e)
keyTyped
in interface KeyListener
public static void main(String[] args)
MyClass
is the name of the program class:
public static void main(String[] args) {
new MyClass().start();
}
If the program needs the command line arguments, the args
array can be passed to the start
method and then retrieved
using the getArgumentArray
method.
args
- An array of string argumentspublic boolean menuAction(ActionEvent e)
public void mouseClicked(MouseEvent e)
mouseClicked
is always preceded by both a mousePressed
and a
mouseReleased
event for the same source.
mouseClicked
in interface MouseListener
public void mouseDragged(MouseEvent e)
mouseDragged
call is always preceded by a
mousePressed
call for the same source. If the
mouse is pressed elsewhere and then enters a source with
the button down, no drag event occurs. Moreover, once the
mouse button goes down in a particular source, only that
source will receive mouse events until the button goes up.
Those events, moreover, are reported even in the mouse
travels outside the domain of the object.
mouseDragged
in interface MouseMotionListener
public void mouseEntered(MouseEvent e)
GObject
).
mouseEntered
in interface MouseListener
public void mouseExited(MouseEvent e)
GObject
).
mouseExited
in interface MouseListener
public void mouseMoved(MouseEvent e)
mouseMoved
in interface MouseMotionListener
public void mousePressed(MouseEvent e)
mousePressed
in interface MouseListener
public void mouseReleased(MouseEvent e)
mouseReleased
in interface MouseListener
public void pause(double milliseconds)
Thread.sleep
, this method never throws an
exception.
milliseconds
- The sleep time in millisecondspublic final void print(boolean x)
print
can display a boolean
.
print
in interface IOModel
public final void print(char x)
print
can display a char
.
print
in interface IOModel
public final void print(double x)
print
can display a double
.
print
in interface IOModel
public final void print(float x)
print
can display a float
.
print
in interface IOModel
public final void print(int x)
print
can display an int
.
print
in interface IOModel
public final void print(long x)
print
can display a long
.
print
in interface IOModel
public final void print(Object x)
print
can display an Object
.
print
in interface IOModel
public void print(String value)
print
method is overloaded so that
value
can be of any type.
print
in interface IOModel
value
- The value to be displayedpublic void println()
println
in interface IOModel
public final void println(boolean x)
println
can display a boolean
.
println
in interface IOModel
public final void println(char x)
println
can display a char
.
println
in interface IOModel
public final void println(double x)
println
can display a double
.
println
in interface IOModel
public final void println(float x)
println
can display a float
.
println
in interface IOModel
public final void println(int x)
println
can display an int
.
println
in interface IOModel
public final void println(long x)
println
can display a long
.
println
in interface IOModel
public final void println(Object x)
println
can display an Object
.
println
in interface IOModel
public void println(String value)
println
method is
overloaded so that value
can be of any type.
println
in interface IOModel
value
- The value to be displayedpublic final boolean readBoolean()
true
or false
).
The input must match one of these strings, ignoring case. If the user
types a value that is not one of these possibilities, the method ordinarily
offers the user a chance to reenter the data, although this behavior
can be changed using the
setExceptionOnError
method.
readBoolean
in interface IOModel
public final boolean readBoolean(String prompt)
setExceptionOnError
method.
readBoolean
in interface IOModel
prompt
- The prompt string to display to the user
public boolean readBoolean(String prompt, String trueLabel, String falseLabel)
readBoolean
ordinarily offers the user a chance
to reenter the data, although this behavior can be changed using the
setExceptionOnError
method.
readBoolean
in interface IOModel
prompt
- The prompt string to display to the usertrueLabel
- The string used to indicate true
falseLabel
- The string used to indicate false
public final double readDouble()
setExceptionOnError
method.
readDouble
in interface IOModel
double
public final double readDouble(double low, double high)
setExceptionOnError
method.
readDouble
in interface IOModel
low
- The lowest value in the permitted rangehigh
- The highest value in the permitted range
double
public final double readDouble(String prompt)
setExceptionOnError
method.
readDouble
in interface IOModel
prompt
- The prompt string to display to the user
double
public double readDouble(String prompt, double low, double high)
low
and high
. If the user types a value
that is not a legal number, the method ordinarily offers the user a chance
to reenter the data, although this behavior can be changed using the
setExceptionOnError
method.
readDouble
in interface IOModel
prompt
- The prompt string to display to the userlow
- The lowest value in the permitted rangehigh
- The highest value in the permitted range
double
public final int readInt()
setExceptionOnError
method.
readInt
in interface IOModel
public final int readInt(int low, int high)
setExceptionOnError
method.
readInt
in interface IOModel
low
- The lowest value in the permitted rangehigh
- The highest value in the permitted range
public final int readInt(String prompt)
setExceptionOnError
method.
readInt
in interface IOModel
prompt
- The prompt string to display to the user
public int readInt(String prompt, int low, int high)
low
and high
. If the user types a value that
is not a legal integer or is outside the specified range, the method
ordinarily offers the user a chance to reenter the data,
although this behavior can be changed using the
setExceptionOnError
method.
readInt
in interface IOModel
prompt
- The prompt string to display to the userlow
- The lowest value in the permitted rangehigh
- The highest value in the permitted range
public final String readLine()
readLine
in interface IOModel
String
public String readLine(String prompt)
readLine
in interface IOModel
prompt
- The prompt string to display to the user
String
public void remove(Component comp)
remove
in class JApplet
comp
- The component to removepublic void remove(int index)
remove
in class Container
index
- The index position of the component to removepublic void removeAll()
removeAll
in class Container
public void repaint()
repaint
in class Component
public void run()
run
method is required for applications that have
a thread of control that runs even in the absence of user actions,
such as a program that uses console interation or that involves
animation. GUI-based programs that operate by setting up an initial
configuration and then wait for user events usually do not specify a
run
method and supply a new definition for init
instead.
run
in interface Runnable
protected void runHook()
protected void setAppletStub(AppletStub stub)
stub
- The applet stubpublic void setBackground(Color color)
setBackground
in class Component
color
- The new background colorpublic void setConsole(IOConsole console)
console
- The IOConsole
object used for this programpublic void setDialog(IODialog dialog)
dialog
- The IODialog
object used for this programpublic void setInputModel(IOModel io)
io
- The input model used for this programpublic void setLayout(LayoutManager layout)
setLayout
in class JApplet
layout
- The layout manager to usepublic void setOutputModel(IOModel io)
io
- The IOModel
object used as the output modelpublic void setParameter(String name, String value)
name
- The name of the parametervalue
- The new valueprotected void setParameterTable(HashMap<String,String> ht)
ht
- The parameter tableprotected void setStartupObject(Object obj)
getStartupObject
.
obj
- The startup objectpublic void setTitle(String title)
title
- The title for this programpublic void showErrorMessage(String msg)
showErrorMessage
in interface IOModel
msg
- The error msg to be displayedpublic final void start()
start
method in Applet
and therefore
will be called as part of applet startup.
start
in class Applet
public void start(String[] args)
args
- An array of strings passed to the programprotected void startHook()
protected void startRun()
public void validate()
validate
in class Container
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |