Drawing arcs, polygons, and moving areas

Drawing some arcs

The above output is produced by the following Java code:

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

public class Graph2a 
{
    public static void main(String[] args) 
    {
	SwingApp app = new SwingApp(450, 250);    
	app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    }
}

class SwingApp extends JFrame
{
    private final DrawPanel panel;		    // class variable
    public SwingApp( int width, int height)	    // class constructor
    {
	super();				    // call to super class constructor
	Container pane = super.getContentPane();    // create layout, set colors
	panel = new DrawPanel();		    // add GUI components
	panel.setBackground(Color.yellow);
	pane.add(panel);
	// add here more code for GUI components
	Toolkit toolkit = Toolkit.getDefaultToolkit();	// optionally position JFrame
	Dimension screenSize = toolkit.getScreenSize(); // in the middle of the screen 
	super.setLocation((screenSize.width - width)/2, (screenSize.height - height)/2);	
	super.setTitle("Swing app");		    // set desired window title
	super.setSize(width, height);		    // set desired window size
	super.setVisible(true);	
    }
}

class DrawPanel extends JPanel			    // main window panel
{
    @Override
    public void paintComponent(Graphics g)
    {
	super.paintComponent(g);		    // must be the 1st line
	// add here more code for drawing on panel 
// setting background and foreground colors
	g.setColor(new Color(220, 220, 220));
	g.fillRect(0, 0, getWidth(), getHeight());
	g.setColor(Color.red);

// draw filled arcs
	g.fillArc(10, 50, 100, 100, 20, 320);
	g.fillArc(150, 50, 100, 100, 340, 40);

// draw nonfilled arc
	g.drawArc(300, 50, 100, 100, 20, 320); 
    }
}  

Drawing polygons

The above output is produced by the following Java code:

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

public class Graph2b 
{
    public static void main(String[] args) 
    {
	SwingApp app = new SwingApp(450, 250);    
	app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    }
}

class SwingApp extends JFrame
{
    private final DrawPanel panel;		    // class variable
    public SwingApp( int width, int height)	    // class constructor
    {
	super();				    // call to super class constructor
	Container pane = super.getContentPane();    // create layout, set colors
	panel = new DrawPanel();		    // add GUI components
	panel.setBackground(Color.yellow);
	pane.add(panel);
	// add here more code for GUI components
	Toolkit toolkit = Toolkit.getDefaultToolkit();	// optionally position JFrame
	Dimension screenSize = toolkit.getScreenSize(); // in the middle of the screen 
	super.setLocation((screenSize.width - width)/2, (screenSize.height - height)/2);	
	super.setTitle("Swing app");		    // set desired window title
	super.setSize(width, height);		    // set desired window size
	super.setVisible(true);	
    }
}

class DrawPanel extends JPanel			    // main window panel
{
    @Override
    public void paintComponent(Graphics g)
    {
	super.paintComponent(g);		    // must be the 1st line
	// add here more code for drawing on panel 
	int xPts[] = {42, 52, 72, 52, 60, 40, 15, 28, 9, 32};
	int yPts[] = {38, 62, 68, 80, 105, 85, 102, 75, 58, 60};

	int XPts[] = {142, 152, 172, 152, 160, 140, 115, 128, 109, 132};

// setting background and foreground colors
	g.setColor(new Color(220, 220, 220));
	g.fillRect(0, 0, getWidth(), getHeight());
	g.setColor(Color.red);
  
// draw a non-filled polygon
	g.drawPolygon(xPts, yPts, xPts.length);

// draw a filled polygon
	g.setColor(Color.blue);
	g.fillPolygon(XPts, yPts, xPts.length);

// alternative way for drawing the above polygon
//      Polygon star = new Polygon(XPts, yPts, xPts.length);
//      g.fillPolygon(star);

// copying an area
	g.copyArea(0, 0, 75, 105, 200, 50);
	g.copyArea(0, 0, 75, 105, 300, 50);
    }
}