Perfect, that worked.  It also updates the line when i move the box around, but 
i think i can fix that.
The weird thing is, am having the exact same problem with images rotating, 
where the previous images are left on the screen and i thought this fix would 
fix it also, but it doesn't.
I can get this program to work if i make it a Frame instead of JPanel.
Here is the code.

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridBagLayout;
import java.awt.Image;
import java.awt.Panel;
import java.awt.Frame;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import javax.swing.JButton;
import java.awt.BorderLayout;
import java.awt.Rectangle;
//To import an image
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

//Used for Timer
import javax.swing.Timer;
import java.awt.event.*;
import javax.swing.JPanel;
import java.awt.Point;
import java.applet.Applet;

public class panel_Compass extends JPanel  implements Runnable{

        private static final long serialVersionUID = 1L;

        //Import the image of the compass
        //Image compass = new ImageIcon("comp1.gif").getImage();  //  
@jve:decl-index=0:
        Image compass = new ImageIcon("compass.gif").getImage();  //  
@jve:decl-index=0:
        //Import the image of the arrow
        Image arrow = new ImageIcon("arrow.gif").getImage();  //  
@jve:decl-index=0:
        //Import the image of the boat
        Image boat = new ImageIcon("boat.gif").getImage();  //  
@jve:decl-index=0:
        //Timer timer;
        Thread thread;
        //Buffered Images
        Image bufferImage;  //  @jve:decl-index=0:
        //Buffred graphic
        Graphics2D bufferGraphic;  //  @jve:decl-index=0:


        //Store current Average Angle
        double avgAngle = 0.0;
        //Store current index to get average angle
        int index = 1;
        int index2 = 1;

        private JButton startButton = null;

        /**
         * This is the default constructor
         */
        public panel_Compass() {
                super();
                initialize();
                //Create a thread to display the compass
                thread = new Thread(this);

        }

        /**
         * This method initializes this
         *
         * @return void
         */
        private void initialize() {
                this.setLayout(null);
                this.setSize(400, 400);
                this.setOpaque(false);
                this.setDoubleBuffered(false);
                //this.setTitle("Frame");
                this.add(getStartButton(), null);

        }

        public double getAngle(){
                //Randomly generate a number between 0 - 360;
                double newAngle = Math.random()*360;
                System.out.println("New Angle = " + Double.toString(newAngle));
                //Return the random angle
                return newAngle;
        }

        public double avgAngle() {
                double angle = Math.random()*360;
                this.avgAngle = this.avgAngle + angle;
                double outputAngle = this.avgAngle/this.index;
                index++;

                System.out.println("Index =" + index + " avgAngle=" + avgAngle 
+ " outputAngle =" + outputAngle);

                return outputAngle;
        }

        public void paintComponent(Graphics g){
                //Create a 2d graphics object
                Graphics2D g2d = (Graphics2D)g;

                //Reduced the area that is being updated to this rectangle
                g2d.clipRect(0, 0, 400, 400);

                //Create a buffer
                if (bufferImage == null){
                        bufferImage = createImage(400,400);
                }
                //Create something in the buffer
                bufferGraphic = (Graphics2D)bufferImage.getGraphics();

                //Display a compass in the buffer
                bufferGraphic.drawImage(compass, 0,0,400,400,this);

                //Display a rotated arrow in the buffer
                bufferGraphic.rotate(Math.toRadians(getAngle()),200 , 200);
                bufferGraphic.drawImage(arrow,100,100,200,200,this);

                //Display a rotated boat image in the buffer
                bufferGraphic.rotate(Math.toRadians(getAngle()),200 , 200);
                bufferGraphic.drawImage(boat, 100,100,200,200,this);

                //Display the image from the buffer
                g2d.drawImage(bufferImage, 0, 0,400,400,  this);

                //Clear the buffer for a new image
                bufferGraphic.dispose();
                //g2d.dispose();
                //g.dispose();
        }


        /**
         * This method initializes startButton
         *
         * @return javax.swing.JButton
         */
        private JButton getStartButton() {
                if (startButton == null) {
                        startButton = new JButton();
                        startButton.setBounds(new Rectangle(6, 32, 40, 21));
                        startButton.addActionListener(new 
java.awt.event.ActionListener() {
                                public void 
actionPerformed(java.awt.event.ActionEvent e) {
                                        
System.out.println("actionPerformed()"); // TODO Auto-generated Event stub 
actionPerformed()
                                        if(!thread.isAlive()){
                                                thread.start();
                                        }
                                }
                        });
                }
                return startButton;
        }

        //The thread will repaint using overloaded update() every 200ms
        public void run() {

                while(true){
                try {
                repaint();
                Thread.sleep(200);
                }
                catch(Exception e) {
                        System.out.println("Stop");
                        thread.stop();
                }
                }
        }
[Message sent by forum member 'ricorx7' (ricorx7)]

http://forums.java.net/jive/thread.jspa?messageID=208454

===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA2D-INTEREST".  For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".

Reply via email to