Results 1 to 2 of 2

Thread: Why is it running twice?

  1. #1

    Thread Starter
    New Member
    Join Date
    Feb 2009
    Posts
    2

    Why is it running twice?

    I'm working on a homework that probably everyone that has taken java ends up doing. I have to get a program to draw 10 triangles. The problem I have is that my program is drawing 10 triangles. Then putting up a black background and then drawing 10. If I don't sleep the thread you cannot tell that the first 10 were ever drawn, but it bugs me and I cannot understand why it is doing this.
    Code:
    import java.awt.*;
    import java.awt.geom.*;
    import java.util.Random;
    import javax.swing.*;
    
    
    public class HW1a extends JFrame {
        int i,z;
        int x[] = new int[3];
        int y[] = new int[3];
        Random rand = new Random(); 
       
       public HW1a()
       {
          super( "Drawing Triangles" );
    
          setSize( 600, 600 );
          setVisible( true );
       }
    
       
       public void paint( Graphics g )
       {
          
          super.paint( g );  
          getContentPane().setBackground(Color.BLACK);
          Graphics2D g2d = ( Graphics2D ) g;
    
          for(z=0; z<10; z++){  //needs to have 10 triangles
          
          GeneralPath triangle = new GeneralPath();  
         
    
    
          for (i=0; i<3; i++) {
             x[i] = rand.nextInt(600);
             y[i] = rand.nextInt(600);
          }
    
          
          triangle.moveTo( x[ 0 ], y[ 0 ] );
    
          
          for ( int count = 1; count < x.length; count++ )
             triangle.lineTo( x[ count ], y[ count ] );
    
          triangle.closePath();  
    
         
          g2d.setColor( new Color(rand.nextInt(256),rand.nextInt(256),rand.nextInt(256)));
          g2d.fill( triangle );  
          try
          {
          // sleep for 50 ms.
          Thread.sleep( 50 );
          }
          catch ( Exception e )
          {}
    
          
          
          }
       } 
    
     
       public static void main(String[] args)
       {
          HW1a application = new HW1a();
          application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
       }
    
    }
    Thank you in advance for any explanations.

  2. #2
    Arabic Poster ComputerJy's Avatar
    Join Date
    Nov 2005
    Location
    Happily misplaced
    Posts
    2,513

    Re: Why is it running twice?

    Code:
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.geom.GeneralPath;
    import java.util.Random;
    import javax.swing.JFrame;
    
    public class Test extends JFrame
    {
    	private static final long serialVersionUID = 3864411708478015289L;
    	int i, z;
    	int x[] = new int[3];
    	int y[] = new int[3];
    	Random rand = new Random();
    
    	public Test()
    	{
    		super("Drawing Triangles");
    		setSize(600, 600);
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setVisible(true);
    	}
    
    	@Override
    	public void paint(Graphics g)
    	{
    		super.paint(g);
    		g.setColor(Color.BLACK);
    		g.fillRect(0, 0, this.getWidth(), this.getHeight());
    		Graphics2D g2d = (Graphics2D) g;
    		for (z = 0; z < 10; z++)
    		{  //needs to have 10 triangles
    
    			GeneralPath triangle = new GeneralPath();
    			for (i = 0; i < 3; i++)
    			{
    				x[i] = rand.nextInt(600);
    				y[i] = rand.nextInt(600);
    			}
    			triangle.moveTo(x[ 0], y[ 0]);
    			for (int count = 1; count < x.length; count++)
    				triangle.lineTo(x[count], y[count]);
    			triangle.closePath();
    			g2d.setColor(new Color(rand.nextInt(256), rand.nextInt(256), rand.nextInt(256)));
    			g2d.fill(triangle);
    			try
    			{
    				// sleep for 50 ms.
    				Thread.sleep(50);
    			} catch (Exception e)
    			{
    			}
    		}
    	}
    
    	public static void main(String[] args)
    	{
    		new Test();
    	}
    }
    The "getContentPane().setBackground(Color.BLACK);" Causes the content pane to refresh with a black background after the painting of the JFrame is done.
    "I'm not normally a praying man, but if you're up there, save me... Superman!" - Homer Simpson
    My Blog

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width