2D Graphics GUI Java

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Polygon;
import java.awt.PrintJob;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class PrintingOneOne {
  static class MyComponent extends JPanel {
    Random random = new Random();
    public void paint(Graphics g) {
      Polygon convex, concave, selfintersecting;
      convex = new Polygon();
      convex.addPoint(20, 20);
      concave = new Polygon();
      concave.addPoint(100 + 20, 20);
      concave.addPoint(100 + 60, 24);
      selfintersecting = new Polygon();
      for (int i = 0; i < 8; i++) {
        selfintersecting.addPoint(200 + random.nextInt(80), 20 + random
            .nextInt(80));
      }
      g.fillPolygon(convex);
      g.drawPolygon(concave);
      g.fillPolygon(selfintersecting);
    }
  }
  public static void main(String args[]) {
    final JFrame frame = new JFrame("Printing 1.1");
    Container contentPane = frame.getContentPane();
    final Component printIt = new MyComponent();
    contentPane.add(printIt, BorderLayout.CENTER);
    JButton button = new JButton("Print");
    contentPane.add(button, BorderLayout.SOUTH);
    ActionListener listener = new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        Toolkit def = Toolkit.getDefaultToolkit();
        PrintJob job = def.getPrintJob(frame, "Print Job", null);
        if (job != null) {
          Graphics pg = job.getGraphics();
          printIt.print(pg);
          pg.dispose();
          job.end();
        }
      }
    };
    button.addActionListener(listener);
    frame.setSize(300, 200);
    frame.show();
  }
}