Re: Graphics2D question.
- From: RichT <someone@xxxxxxxxxxxxx>
- Date: Thu, 13 Mar 2008 20:56:49 +0000
Just make the parameters class variables and they will be visible to both your calculation method and your rendering method.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class test7 extends JPanel implements Runnable {
static final Color[] COLORS =
{Color.RED, Color.BLUE, Color.GREEN, Color.WHITE};
volatile int colorIndex;
public test7() {
setPreferredSize(new Dimension(400,300));
}
public void paintComponent(Graphics g) {
g.setColor(COLORS[colorIndex]);
g.fillRect(0,0,getWidth(),getHeight());
}
public void run() {
while (true) {
++colorIndex;
colorIndex %= 4;
repaint();
try {
Thread.sleep(1000);
} catch (InterruptedException ie) { }
}
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
test7 t7 = new test7();
f.add(t7);
f.pack();
f.setVisible(true);
new Thread(t7).start();
}
});
}
}
The frame to hold your display component need be no more complicated than the one I show here. If you need menus, add those to the frame but have the display component implement ActionListener. You could separate the rendering method from the display class but there is probably no real need. If you want one display class and multiple calculating methods, just override that method.
The volatile modifier is needed on the colorIndex variable because it will be read in more than one thread. If you are going to do more sophisticated animation, consider using a javax.swing.Timer so that the calculations can be done on the EDT (unless they take a long time).
Take a look at the Asteroids game I wrote that has many of these concepts in action.
http://rabbitbrush.frazmtn.com/
The source code is there on the applet page.
Hi, thanks for your help :)
.
- References:
- Graphics2D question.
- From: RichT
- Re: Graphics2D question.
- From: Knute Johnson
- Graphics2D question.
- Prev by Date: java.awt.Robot for popup windows
- Next by Date: Re: java.awt.Robot for popup windows
- Previous by thread: Re: Graphics2D question.
- Next by thread: Re: Graphics2D question.
- Index(es):