Java:Tutorials:Graphics
Graphics and Techniques
I find that the easiest way to implement graphics in a Java application is with the JFrame. I start by creating a shell which opens a window that we can draw onto. Start by importing java.awt.* java.awt.event.* and javax.swing.*.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
Then make sure your class extends JFrame.
Within the constructor call setVisible(true); and setSize(Xwidth,Ywidth);
public class simplegraphics extends JFrame
{
public simplegraphics()
{
setVisible(true);
setSize(300,200);
}
Next you need a paint method.
public void paint(Graphics g)
{
//some code where painting occurs
}
Then in your main method declare a new simplegraphics, and call the repaint function.
public static void main(String args[])
{
simplegraphics SG = new simplegraphics();
SG.repaint();
}
}
Painting
public void paint(Graphics g)
{
g.translate(x,y); //Moves the origin 0,0 to this point.
g.setColor(Color.red);//Color can be replaced by one of multiple
//predefined color or created manualy.
//Such as Color.blue Color.green or
//new Color(Red_Amount,Green_Amount,Blue_Amount)
g.drawLine(x,y,width,height);//their are more commands than whats shown here.
g.drawRect(x,y,width,height);
g.fillRect(x,y,width,height);
g.drawOval(x,y,xRadius,yRadius);
g.fillOval(x,y,xRadius,yRadius);
}
Technique/Animation
By making these changes or copying and pasting; this program is a demonstration on animating a ball bounce back and forth.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class simplegraphics extends JFrame {
int x=150,y=100,xdir=1,ydir=2 ;
public simplegraphics()
{
boolean initial=true;
setVisible(true);
setSize(300,200);
}
public void paint(Graphics g)
{
g.translate(0,25);//move origin down to compromise for the title bar
g.setColor(Color.white); //background color
g.fillRect(0,0,getWidth(),getHeight());//background
g.setColor(Color.white); //clears the old ball
g.fillOval(x,y,20,20);
move(); //updates the balls position
g.setColor(Color.red); //draws a new ball
g.fillOval(x,y,20,20);
}
public void move()
{
if(x<0||x>getWidth()-20)
xdir*=-1;
if(y<0||y>getHeight()-45)
ydir*=-1;
x+=xdir;
y+=ydir;
}
public static void main(String args[])
{
simplegraphics SG = new simplegraphics();
int step=0;
while(true)
{
if(step%500000==0)//the number 500000 doesn't matter but a smaller number will make the
//animation, not the ball, speed up.
{
SG.repaint();
}
step++;
}
}
} --techno 00:02, 24 May 2005 (EDT)