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 {
}