Overriding paintComponent

13,312

Don't call

super.paint(g);

within paintComponent. This will result in an infinite loop in the paint chain mechanism. Instead you need

super.paintComponent(g);

For better help sooner consider posting an SSCCE

Share:
13,312
Admin
Author by

Admin

Updated on June 14, 2022

Comments

  • Admin
    Admin almost 2 years

    Ok so I have been trying to figure this out for the past 26 hours with guide and online help but no success.

    All I want to do is draw an oval when the user clicks in the PaintPanel Please someone help so I can sleep :P

    screen

    In PaintApplet class:

      private void PaintPanelMouseClicked(java.awt.event.MouseEvent evt) {                                        
        // TODO add your handling code here:
        if(FillRadioButton.isSelected())
        {
        PaintPanel.setBackground(JColor.getColor());
       PaintPanel.repaint();
        }
        if(BrushRadioButton.isSelected())
        {
             Point ComponentPoint = PaintPanel.getLocationOnScreen();
             PaintPanel.add(new Painter(ComponentPoint));
        }
    }           
    

    Painter Class:

    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     import java.awt.*;
    
    public class Painter extends JPanel{
    
    Point  Component;
    
    public Painter(Point Com)
    {
        Component = Com;
    }
    
    public void paintComponent(Graphics g) 
    {
    
            super.paint(g);
          Point CursorPoint=   MouseInfo.getPointerInfo().getLocation(); //gets cursorpoint
    
           int ComPX =  Component.x;
            int ComPY =  Component.y;
            int CurPX =  CursorPoint.x;
            int CurPY =  CursorPoint.y;
            int FinalX = CurPX - ComPX;
            int FinalY =  CurPY - ComPY;
    
           g.drawOval(FinalX, FinalY, 20, 20);
    
    
    
    
    }
    }