Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.gui > #3272 > unrolled thread
| Started by | "RichT" <richt@THRWHITE.remove-dii-this> |
|---|---|
| First post | 2011-04-27 15:43 +0000 |
| Last post | 2011-04-27 15:43 +0000 |
| Articles | 1 — 1 participant |
Back to article view | Back to comp.lang.java.gui
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: Graphics2D question. "RichT" <richt@THRWHITE.remove-dii-this> - 2011-04-27 15:43 +0000
| From | "RichT" <richt@THRWHITE.remove-dii-this> |
|---|---|
| Date | 2011-04-27 15:43 +0000 |
| Subject | Re: Graphics2D question. |
| Message-ID | <R6KdnXOsHpvhCETanZ2dnUVZ8hmdnZ2d@bt.com> |
To: comp.lang.java.gui
> 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 :)
---
* Synchronet * The Whitehouse BBS --- whitehouse.hulds.com --- check it out free usenet!
--- Synchronet 3.15a-Win32 NewsLink 1.92
Time Warp of the Future BBS - telnet://time.synchro.net:24
Back to top | Article view | comp.lang.java.gui
csiph-web