Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.gui > #3272

Re: Graphics2D question.

From "RichT" <richt@THRWHITE.remove-dii-this>
Subject Re: Graphics2D question.
Message-ID <R6KdnXOsHpvhCETanZ2dnUVZ8hmdnZ2d@bt.com> (permalink)
Newsgroups comp.lang.java.gui
References <47d955d4$0$1659$b9f67a60@news.newsdemon.com>
Date 2011-04-27 15:43 +0000
Organization TDS.net

Show all headers | View raw


  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 comp.lang.java.gui | Previous | Next | Find similar | Unroll thread


Thread

Re: Graphics2D question. "RichT" <richt@THRWHITE.remove-dii-this> - 2011-04-27 15:43 +0000

csiph-web