Java by Example - using methods and basic mouse functions

back 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 next

This example demonstrates the use of a simple method with more than one parameter. The smiley is drawn from inside the method void Smiley(int x, int y), so you can draw several smileys by just calling that method with different parameters for the coordinates.

//Sourcecode

import java.awt.*;
import java.applet.*;

//Introduces methods with more than one parameter
//and getting the size of the applet

public class Project4 extends Applet
{
    //global graphics object
    public Graphics g;

    //our method with 2 parameters for the x- and y coordinate of our smiley
    public void Smiley(int x, int y)
    {
        //smileys face
        g.setColor(Color.yellow);
        g.fillOval(x,y,30,30);

        //his eyes
        g.setColor(Color.black);
        g.fillOval(x+6,y+7,6,6);
        g.fillOval(x+18,y+7,6,6);

        //the mouth, a red oval and a yellow one shifted upwards
        g.setColor(Color.red);
        g.fillOval(x+5,y+15,20,8);
        g.setColor(Color.yellow);
        g.fillOval(x+6,y+13,18,8);
    }

    public void paint (Graphics gr)
    {
        g=gr;

        //paint the background blue - this time we measure the size
        //of the applet to get the size of the background rectangle
        g.setColor(Color.blue);
        g.fillRect(0,0,size().width,size().height);

        //now we call our method with different parameters
        Smiley(50,50);
        Smiley(150,90);
        Smiley(250,80);
        Smiley(180,10);
        Smiley(120,230);
    }
}

Here you can see how to use the Java methods for determining whether the mouse cursor is inside or outside the applet (mouseEnter and mouseExit), and how to process mouse clicks inside the applet.
The expression clicks=clicks+1;, which increments the variable clicks, is usually written in short form: clicks++, which we will also do from now on. The expression clicks+=2 would increment it with 2 instead of 1.

//Sourcecode

import java.awt.*;
import java.applet.*;

public class Project5 extends Applet
{
    int mouseX, mouseY, clicks;
    boolean mouseIn;

    public boolean mouseDown(Event evt,int x,int y)
    {
        clicks=clicks+1;
        mouseX=x;
        mouseY=y;

        repaint();

        return true;
    }

    public boolean mouseEnter(Event evt,int x,int y)
    {
        mouseIn=true;
        repaint();

        return true;
    }

    public boolean mouseExit(Event evt,int x,int y)
    {
        mouseIn=false;
        repaint();

        return true;
    }

    public void paint(Graphics g)
    {
        g.setFont(new Font("Helvetica",Font.PLAIN,13));

        g.setColor(Color.black);
        g.drawString("Mouse clicks: "+clicks, 100,80);
        g.drawString("Mouseclick coordinates: x="+mouseX+", y="+mouseY, 40,110);

        if(mouseIn==true)
        {
            g.setColor(Color.red);
            g.drawString("Mouse is inside the applet",70,180);
        }
        else
        {
            g.setColor(Color.blue);
            g.drawString("Mouse is outside the applet",70,180);
        }
    }
}

back 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 next

0 - setup - getting your tools ready
1 - basic graphics functions
2 - simple methods and basic data types
3 - IF, ELSE and SWITCH: basic control structures
4 - introducing the operators
5 - methods with and without a return value
6 - using methods and basic mouse functions
7 - fonts, random numbers and timers
8 - flicker free graphics, GIF and JPEG display
9 - animation with GIF pictures, sprite animation
10 - loops, advanced color functions
11 - random colors and arrays
12 - digital clocks, HTML page parameters
13 - introducing classes and objects
14 - using the Vector class
15 - using mouseMove and mouseDrag
16 - keyboard commands and playing sound
17 - detecting collisions and intersections
18 - a Bouncing Balls applet
19 - fun with letters and words
20 - rotating lines and polygons
21 - sorting and shuffling


© 2000 by Johannes Wallroth
www.programming.de

watson@programming.de