Widgets

File: java/Widgets/Main.java

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

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

    public Main () {
	// Window setup
	setLocation (100, 100);
	setSize (300, 300);
	Container content = getContentPane();
	content.setLayout (new FlowLayout());

	// Make various widgets and add them
	MyButton b1 = new MyButton ("Push me");
	content.add (b1);

	MyButton b2 = new MyButton ("Push me too");
	content.add (b2);

	MyComboBox c1 = new MyComboBox ();
	content.add (c1);

	MyList l1 = new MyList ();
	content.add (l1);

	MyRadio r1 = new MyRadio ();
	content.add (r1);

	MyScrollBar s1 = new MyScrollBar ();
	content.add (s1);

	MyTextField t1 = new MyTextField ();
	content.add (t1);

	// This button reports the data from several other widgets
	MyGetButton b = new MyGetButton (c1, l1, s1);
	content.add (b);

	// A label widget, no interaction
	JLabel label = new JLabel ("This is a label");
	content.add (label);

	// Finally, put our window on the screen
	setVisible (true);
    }
}

File: java/Widgets/MyButton.java

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

public class MyButton extends JButton implements ActionListener {
    public MyButton (String label) {
	setText (label);
	setFont (new Font("Serif", Font.ITALIC, 18));
	setBackground (Color.yellow);
	setForeground (Color.red);
	setBorder (new LineBorder(Color.green, 2));
	addActionListener (this);
    }

    public void actionPerformed (ActionEvent e) {
	System.out.println (getText() + " Button was pushed");
    }
}

File: java/Widgets/MyComboBox.java

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

public class MyComboBox extends JComboBox implements ItemListener {
    public MyComboBox () {
	addItem ("one");
	addItem ("two");
	addItem ("three");
	addItem ("four");
	setSelectedItem ("three"); // initial
	addItemListener (this);
    }

    public void itemStateChanged (ItemEvent e) {
	if (e.getStateChange()==ItemEvent.SELECTED) {
	    System.out.println ("Combo: " + e.getItem());
	}
    }
}

File: java/Widgets/MyList.java

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

public class MyList extends JList implements ListSelectionListener {
    public MyList () {
	String[] items = {"un", "deux", "trois", "quatre"};
	setListData (items);
	setSelectionMode (ListSelectionModel.SINGLE_SELECTION);
	addListSelectionListener (this);
    }

    public void valueChanged (ListSelectionEvent e) {
	if (! e.getValueIsAdjusting()) {
	    System.out.println ("List: " + getSelectedValue());
	}
    }
}

File: java/Widgets/MyRadio.java

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

public class MyRadio extends JPanel implements ItemListener {
    public MyRadio () {
	// Border around our JPanel
	setBorder (new LineBorder(Color.blue, 1));

	// ButtonGroup makes them behave as radio buttons
	ButtonGroup g = new ButtonGroup ();

	JCheckBox cb = new JCheckBox ("I", false);
	add (cb);
	g.add (cb);
	cb.addItemListener (this);

	cb = new JCheckBox ("II", true);
	add (cb);
	g.add (cb);
	cb.addItemListener (this);

	cb = new JCheckBox ("III", false);
	add (cb);
	g.add (cb);
	cb.addItemListener (this);

	cb = new JCheckBox ("IV", false);
	add (cb);
	g.add (cb);
	cb.addItemListener (this);
    }
    
    public void itemStateChanged (ItemEvent e) {
	if (e.getStateChange()==ItemEvent.SELECTED) {
	    System.out.println ("Radio: " + ((JCheckBox)e.getItem()).getText());
	}
    }
}

File: java/Widgets/MyScrollBar.java

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

public class MyScrollBar extends JScrollBar implements AdjustmentListener {
    public MyScrollBar () {
	setOrientation (HORIZONTAL);
	addAdjustmentListener (this);
    }

    public void adjustmentValueChanged (AdjustmentEvent event) {
	System.out.println ("Scrollbar: " + getValue());
    }
}

File: java/Widgets/MyTextField.java

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

public class MyTextField extends JTextField implements ActionListener {
    public MyTextField () {
	super ("Initial value", 20);
	addActionListener (this);
    }

    public void actionPerformed (ActionEvent e) {
	System.out.println ("Text: " + e.getActionCommand());
    }
}

File: java/Widgets/MyGetButton.java

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

public class MyGetButton extends JButton implements ActionListener {
    private MyComboBox c;
    private MyList l;
    private MyScrollBar s;

    public MyGetButton (MyComboBox c, MyList l, MyScrollBar s) {
	this.c = c;
	this.l = l;
	this.s = s;

	setText ("Get Data");
	addActionListener (this);
    }

    public void actionPerformed (ActionEvent e) {
	System.out.println ("Values: " + c.getSelectedItem() +
			    ", " + l.getSelectedValue() +
			    ", " + s.getValue());
    }
}