// MovingBallAWTApplet.java (c) Kari Laitinen // http://www.naturalprogramming.com // 2001-03-31 File created. // 2009-11-05 Latest modification. // This program is a traditional Java applet that draws a ball // onto the screen. There is also a "control panel" which provides // buttons to move the ball and a possibility to change the // color of the ball. /* Other versions of this program are 'swing' programs which means that swing classes like JPanel, JButton, JComboBox, etc. are in use. Swing classes represent newer Java technology and thus they should be favored in Java programming. When swing classes are in use, Java programs should always provide the same Graphical User Interface (GUI) regardless of the environment (Windows, UNIX, Linux, Macintosh, etc.) in which the programs are executed. */ import java.awt.* ; import java.awt.event.* ; public class MovingBallAWTApplet extends java.applet.Applet implements ActionListener, ItemListener { Button left_button, up_button, down_button, right_button ; int applet_width, applet_height ; int ball_center_point_x, ball_center_point_y ; Color current_ball_color = Color.red ; public void init() { setLayout( new BorderLayout() ) ; Panel operations_panel = new Panel() ; left_button = new Button( " < " ) ; up_button = new Button( " Up " ) ; down_button = new Button( " Down " ) ; right_button = new Button( " > " ) ; left_button.addActionListener( this ) ; up_button.addActionListener( this ) ; down_button.addActionListener( this ) ; right_button.addActionListener( this ) ; operations_panel.add( left_button ) ; operations_panel.add( up_button ) ; operations_panel.add( down_button ) ; operations_panel.add( right_button ) ; Choice color_selection_menu = new Choice() ; color_selection_menu.addItem( "red" ) ; color_selection_menu.addItem( "orange" ) ; color_selection_menu.addItem( "yellow" ) ; color_selection_menu.addItem( "green" ) ; color_selection_menu.addItem( "blue" ) ; color_selection_menu.addItem( "magenta" ) ; color_selection_menu.addItem( "cyan" ) ; color_selection_menu.addItem( "pink" ) ; color_selection_menu.addItem( "lightGray" ) ; color_selection_menu.addItemListener( this ) ; operations_panel.add( color_selection_menu ) ; add( "South", operations_panel ) ; // Let's get the size of the applet (defined in .html file) applet_width = getSize().width ; applet_height = getSize().height ; ball_center_point_x = applet_width / 2 ; ball_center_point_y = applet_height / 2 ; } public void actionPerformed( ActionEvent event ) { if ( event.getSource() instanceof Button ) { if ( event.getSource() == left_button ) { ball_center_point_x -= 3 ; } else if ( event.getSource() == up_button ) { ball_center_point_y -= 3 ; } else if ( event.getSource() == down_button ) { ball_center_point_y += 3 ; } else if ( event.getSource() == right_button ) { ball_center_point_x += 3 ; } repaint() ; } } public void itemStateChanged( ItemEvent menu_selection ) { String selected_color = (String) menu_selection.getItem() ; if ( selected_color.equals( "red" ) ) { current_ball_color = Color.red ; } else if ( selected_color.equals( "orange" ) ) { current_ball_color = Color.orange ; } else if ( selected_color.equals( "yellow" ) ) { current_ball_color = Color.yellow ; } else if ( selected_color.equals( "green" ) ) { current_ball_color = Color.green ; } else if ( selected_color.equals( "blue" ) ) { current_ball_color = Color.blue ; } else if ( selected_color.equals( "magenta" ) ) { current_ball_color = Color.magenta ; } else if ( selected_color.equals( "cyan" ) ) { current_ball_color = Color.cyan ; } else if ( selected_color.equals( "pink" ) ) { current_ball_color = Color.pink ; } else if ( selected_color.equals( "lightGray" ) ) { current_ball_color = Color.lightGray ; } repaint() ; } public void paint( Graphics graphics ) { graphics.setColor( current_ball_color ) ; graphics.fillOval( ball_center_point_x - 50, ball_center_point_y - 50, 100, 100 ) ; graphics.setColor( Color.black ) ; graphics.drawString( "(" + ball_center_point_x + ", " + ball_center_point_y + ")", 20, 20 ) ; graphics.drawOval( ball_center_point_x - 50, ball_center_point_y - 50, 100, 100 ) ; } }