Hey!

I have an application that almost works, but I can't draw 2D graphics on the panel when I push the button "RITA". Why ?


Code:
package grafik;

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.geom.*;


public class NyRam extends JFrame implements ActionListener
{
    private JPanel panel1 = new JPanel ();
    private JPanel panel2 = new JPanel ();
    private JPanel panel3 = new JPanel ();
    private JPanel panelen = new JPanel ();
    private JLabel etikett1 = new JLabel ("Punkt 1");
    private JLabel etikett2 = new JLabel ("Punkt 2");
    private JLabel etikett3 = new JLabel ("Punkt 3");
    private JTextField textFalt1 = new JTextField (5);
    private JTextField textFalt2 = new JTextField (5);
    private JTextField textFalt3 = new JTextField (5);
    private JTextField textFalt4 = new JTextField (5);
    private JTextField textFalt5 = new JTextField (5);
    private JTextField textFalt6 = new JTextField (5);
    private JButton knapp = new JButton ("RITA");
    private Point2D.Double punktP1;
    private Point2D.Double punktP2;
    private Point2D.Double punktP3;
    private NyPanel nyPan = new NyPanel ();

    public NyRam (String titel)
    {
        super (titel);
        this.setResizable (false);
        this.setLocationRelativeTo (null);
        this.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
        this.setSize (800, 600);
        this.setVisible (true);

        etikett1.setForeground (Color.WHITE);
        etikett2.setForeground (Color.WHITE);
        etikett3.setForeground (Color.WHITE);
        
        textFalt1.setBackground (Color.BLACK);
        textFalt1.setForeground (Color.WHITE);
        textFalt1.setText ("5.0");
        textFalt2.setBackground (Color.BLACK);
        textFalt2.setForeground (Color.WHITE);
        textFalt2.setText ("15.0");
        textFalt3.setBackground (Color.BLACK);
        textFalt3.setForeground (Color.WHITE);
        textFalt3.setText ("50.0");
        textFalt4.setBackground (Color.BLACK);
        textFalt4.setForeground (Color.WHITE);
        textFalt4.setText ("100.0");
        textFalt5.setBackground (Color.BLACK);
        textFalt5.setForeground (Color.WHITE);
        textFalt5.setText ("150.0");
        textFalt6.setBackground (Color.BLACK);
        textFalt6.setForeground (Color.WHITE);
        textFalt6.setText ("200.0");

        panel1.setLayout (new FlowLayout(FlowLayout.CENTER, 6, 2));
        panel1.add (etikett1);
        panel1.add (textFalt1);
        panel1.add (textFalt2);
        panel1.setBackground (Color.BLACK);

        panel2.setLayout (new FlowLayout (FlowLayout.CENTER, 6, 2));
        panel2.add (etikett2);
        panel2.add (textFalt3);
        panel2.add (textFalt4);
        panel2.setBackground (Color.BLACK);

        panel3.setLayout (new FlowLayout (FlowLayout.CENTER, 6, 2));
        panel3.add (etikett3);
        panel3.add (textFalt5);
        panel3.add (textFalt6);
        panel3.setBackground (Color.BLACK);

        knapp.addActionListener (this);
        knapp.setBackground (Color.BLACK);
        knapp.setForeground (Color.WHITE);
        
        panelen.setLayout (new GridLayout (1, 1));
        panelen.add (panel1);
        panelen.add (panel2);
        panelen.add (panel3);
        panelen.add (knapp);
        
        this.setLayout (new BorderLayout ());
        this.add (panelen, "South");
        this.add (nyPan, "North");
    }

    public void actionPerformed (ActionEvent e)
    {
        try
        {
            String p1x = textFalt1.getText ();
            double punkt1x = Double.parseDouble (p1x);

            String p1y = textFalt2.getText ();
            double punkt1y = Double.parseDouble (p1y);

            String p2x = textFalt3.getText ();
            double punkt2x = Double.parseDouble (p2x);

            String p2y = textFalt4.getText ();
            double punkt2y = Double.parseDouble (p2y);

            String p3x = textFalt5.getText ();
            double punkt3x = Double.parseDouble (p3x);

            String p3y = textFalt6.getText ();
            double punkt3y = Double.parseDouble (p3y);

            punktP1 = new Point2D.Double (punkt1x, punkt1y);
            punktP2 = new Point2D.Double (punkt2x, punkt2y);
            punktP3 = new Point2D.Double (punkt3x, punkt3y);

            nyPan = new NyPanel (punktP1, punktP2, punktP3);
            this.add (nyPan, "North");
            nyPan.repaint ();

        } catch (Exception g)
        {
            JOptionPane.showMessageDialog (null, "Du måste ange heltal eller flyttal i alla fälten!\n" +
                    "För varje punkt så skall x samt y anges, (x, y).\n\n Felmeddelandet: " + g, "Meddelande", JOptionPane.ERROR_MESSAGE );
        }
    }
}


Code:
package grafik;

import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;

public class NyPanel extends JPanel
{
    private Point2D.Double p1 = new Point2D.Double ();
    private Point2D.Double p2 = new Point2D.Double ();
    private Point2D.Double p3 = new Point2D.Double ();

    public NyPanel (Point2D.Double p1, Point2D.Double p2, Point2D.Double p3)
    {
        this.p1 = p1;
        this.p2 = p2;
        this.p3 = p3;
    }

    public NyPanel ()
    {
        
    }

    @Override
    public void paintComponent (Graphics gr)
    {
        super.paintComponent (gr);
        this.setBackground(Color.BLACK);
        this.setSize(800, 546);
        Graphics2D g = (Graphics2D) gr;
        g.setColor (Color.WHITE);
        
        QuadCurve2D kurvan = new QuadCurve2D.Double (this.p1.x, this.p1.y, this.p2.x, this.p2.y, this.p3.x, this.p3.y);
        Line2D.Double linjen = new Line2D.Double (this.p1, this.p3);
        Rectangle2D rektangeln = new Rectangle2D.Double (this.p1.x, this.p1.y, this.p3.x, p3.y);

        g.draw (kurvan);
        g.draw (linjen);
        g.draw (rektangeln);
    }
}