home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 18 REXX
/
18-REXX.zip
/
netrexx.zip
/
NetRexx
/
Buttons.nrx
< prev
next >
Wrap
Text File
|
1998-04-15
|
5KB
|
96 lines
/* A sample graphics stand-alone application for the Java 1.1 platform,
using dependent and adapter classes.
This draws two buttons in a frame window on the screen, and sets
the background colour whenever one is pushed.
An off-screen image is used to show how one is handled, though it is
not needed for this simple effect. The image reverts to default
background when the window is resized.
*/
options binary -- optional, for speed
/* ------------------------------------------------------------------ */
/* The main (parent) class */
/* ------------------------------------------------------------------ */
class Buttons adapter extends Frame-
implements WindowListener, ComponentListener
properties shared
shadow=Image -- offscreen image
properties constant
mywidth=200 -- our shape
myheight=300 -- ..
glass=Toolkit.getDefaultToolkit.getScreenSize -- screen geometry
/* The 'main' method is called when this class is started as an application */
method main(s=String[]) static
frame=Buttons("My Buttons" Rexx(s)) -- make a titled frame
-- now size and place it mid-screen
frame.setBounds((glass.width-mywidth)%2,(glass.height-myheight)%2,-
mywidth, myheight)
frame.show -- and make it visible
/* The constructor for Buttons */
method Buttons(s=String)
super(s) -- pass title to superclass
setLayout(FlowLayout()) -- set component layout scheme
add(Buttons.Left()) -- add one button ..
add(Buttons.Right()) -- .. and the other
addWindowListener(this) -- please tell us about Window events ..
addComponentListener(this) -- .. and component events
/* newimage -- make a new offscreen image */
method newimage
shadow=createImage(getSize.width, getSize.height)
/* update -- called when the window is updated */
/* paint -- called when the window needs to be redrawn */
method update(g=Graphics) -- we supply this to avoid flicker
paint(g)
method paint(g=Graphics)
if shadow=null then newimage -- ensure we have an image
g.drawImage(shadow, 0, 0, this)-- copy the image to screen
/* componentResized -- called after graphics area resized */
method componentResized(e=ComponentEvent)
newimage -- make new sized image
/* windowClosing -- called when the window is closed */
-- We need to handle this to end the program
method windowClosing(e=WindowEvent)
exit
/* ------------------------------------------------------------------ */
/* A dependent class for a button */
/* ------------------------------------------------------------------ */
class Buttons.Left dependent extends Button implements ActionListener
method Left -- construct the button
super("Green") -- we choose the label
addActionListener(this) -- listen for action events
method actionPerformed(a=ActionEvent) -- Button pressed
g=parent.shadow.getGraphics -- get the image
g.setColor(Color.green) -- choose a colour
-- now colour the image
g.fillRect(0, 0, parent.getSize.width, parent.getSize.height)
parent.repaint -- and request redraw
/* ------------------------------------------------------------------ */
/* A dependent class for a button */
/* ------------------------------------------------------------------ */
-- (If many buttons are similar, it could be worth making a shared
-- superclass. Equally, a method on the parent object could be called
-- to set and fill the new colour, for example, use:
-- parent.newColor(Color.red)
-- to call a newColor method in the Buttons class on the parent object.)
class Buttons.Right dependent extends Button implements ActionListener
method Right -- construct the button
super("Red") -- we choose the label
addActionListener(this) -- listen for action events
method actionPerformed(a=ActionEvent) -- Button pressed
g=parent.shadow.getGraphics -- get the image
g.setColor(Color.red) -- choose a colour
-- now colour the image
g.fillRect(0, 0, parent.getSize.width, parent.getSize.height)
parent.repaint -- and request redraw