Layout

File: java/Layout/Main.java

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

public class Main extends JFrame {
    public static void main (String [] args) {
	new Main();
    }

    public Main () {
	// Window setup
	setLocation (100, 100);
	setSize (500, 500);
	setDefaultCloseOperation (EXIT_ON_CLOSE);

	Container content = getContentPane();
	content.setLayout (new BorderLayout());

	// Text field at top
	JTextField urlField = new JTextField ("http://www.cs.tufts.edu", 30);
	urlField.setBorder (new LineBorder(Color.blue, 2));
	content.add (urlField, BorderLayout.NORTH);

	// Drawing canvas in middle
	MyCanvas canvas = new MyCanvas ();
	canvas.setBorder (new LineBorder(Color.red, 2));
	content.add (canvas, BorderLayout.CENTER);

	// Control panel at bottom
	JPanel controls = new JPanel ();
	controls.setBorder (new LineBorder(Color.blue, 2));
	controls.setLayout (new FlowLayout ());

	// Put this inside the control panel
	JComboBox combo = new JComboBox ();
	combo.addItem ("Forward");
	combo.addItem ("Back");
	combo.addItem ("Home");
	controls.add (combo);

	// These 2 buttons inside control panel also
	JButton reloadButton = new JButton ("Reload");
	controls.add (reloadButton);
	JButton stopButton = new JButton ("Stop");
	controls.add (stopButton);

	// Now plug the control panel into the main frame
	content.add (controls, BorderLayout.SOUTH);

	// Settings panel on right
	JPanel settings = new JPanel ();
	settings.setBorder (new LineBorder(Color.blue, 2));
	settings.setLayout (new GridLayout (5, 1));

	// Put these inside the settings panel
	JLabel label = new JLabel ("Settings:");
	settings.add (label);
	JCheckBox graphicsCB = new JCheckBox ("Graphics", true);
	settings.add (graphicsCB);
	JCheckBox animationCB = new JCheckBox ("Animation", true);
	settings.add (animationCB);
	JCheckBox javascriptCB = new JCheckBox ("Javascript", false);
	settings.add (javascriptCB);
	JCheckBox cookiesCB = new JCheckBox ("Cookies", false);
	settings.add (cookiesCB);

	// Now plug the settings panel into the main frame
	content.add (settings, BorderLayout.EAST);

	// And show the whole window
	setVisible (true);
    }
}

File: java/Layout/MyCanvas.java

import javax.swing.*;

// Because JComponent is an abstract class
public class MyCanvas extends JComponent {
}