I am to design an applet that produces a six sided polygon in which the coordinates are set according to the location of the mouse when it is clicked. I am struggling setting each of the clicks to the correct point. I have tried many things, however have not been able to come up with a working idea. I have set up a while loop in my mouseListener, and am not sure what I am missing. If you can help, I would appreciate it.

I thank you in advance for your help, here is my code...

package hw14;

import java.awt.event.MouseEvent;
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseListener;

public class Main extends JApplet
{
    private int x1, x2, x3, x4, x5, x6;
    private int y1, y2, y3, y4, y5, y6;
    int [] xC = {x1,x2,x3,x4,x5,x6};
      int [] yC = {y1,y2,y3,y4,y5,y6};
    
    boolean mouseClicked = false;
        
   public void init()
   {
      getContentPane().setBackground(Color.WHITE);  
      addMouseListener(new MyMouseListener());
   }
   
   public void paint(Graphics g)
   {
       
      
      
      super.paint(g);
      g.setColor(Color.BLACK);
      g.drawPolygon(xC,yC,6);
      
      
      if(mouseClicked== true)
      {
          
      g.setColor(Color.BLACK);
      g.drawPolygon(xC,yC,6);
      
      }
   
   
   }
   
   
   private class MyMouseListener implements MouseListener
   {
        
       public void mousePressed(MouseEvent e)
       {
           
       }

     
        public void mouseClicked(MouseEvent e) {
           
        
        int x = e.getX();
        int y = e.getY();
        
        int i= 0;
        int j =0;
        int r = 0;
        
        while (i <= 5)
        {
            xC[r] = x;
            yC[j] = y;
           
            
            r++;
            j++;
            i++;
            
           
        }

        
        mouseClicked = true;
        repaint();
        
        }

        public void mouseReleased(MouseEvent e) {
           
        }

        public void mouseEntered(MouseEvent e) {
           
        }

        public void mouseExited(MouseEvent e) {
            
        }
   }
   
   }

You don't want a while() loop in the mouseListener. You want to increment a counter each time a point is collected until you have recorded the required number of points for your polygon. You may only want to draw the points themselves until you have the entire polygon specified. You'll also need some way to reset it. Perhaps a seventh click or a right-click should clear the points and reset the counter.

commented: You've got to have a high EQ with that IQ to put things that clearly in so few words +4
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.