Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.gui > #3272
| 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 |
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
Re: Graphics2D question. "RichT" <richt@THRWHITE.remove-dii-this> - 2011-04-27 15:43 +0000
csiph-web