BoxDemo.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*; // for Border, BorderFactory
/**
Demonstrate Box layout.
*/
public class BoxDemo extends JFrame
{
public static void main(String[] argv)
{
BoxDemo t = new BoxDemo();
t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
t.show();
}
public BoxDemo()
{
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension ss = kit.getScreenSize();
setSize(ss.width/3,ss.height/3);
setLocation(ss.width/4,ss.height/4);
setTitle("CISC370-011 -- box layout demo");
Container cp = getContentPane();
Box p = Box.createVerticalBox();
cp.add(p);
p.add(Box.createVerticalGlue());
// A label showing the currently-selected stooge.
// The label is centered in a raised bevel border.
JPanel stoogePanel = new JPanel();
JLabel stoogeLabel = new JLabel("No stooge",JLabel.CENTER);
stoogePanel.add(stoogeLabel);
p.add(stoogePanel);
Border b1 = BorderFactory.createRaisedBevelBorder();
stoogePanel.setBorder(b1);
p.add(Box.createVerticalGlue());
// A label showing the most recently changed dwarf.
// The label is centered in a lowered bevel border.
JPanel dwarfPanel = new JPanel();
JLabel dwarfLabel = new JLabel("No dwarf",JLabel.CENTER);
dwarfPanel.add(dwarfLabel);
p.add(dwarfPanel);
Border b2 = BorderFactory.createLoweredBevelBorder();
dwarfPanel.setBorder(b2);
p.add(Box.createVerticalGlue());
Box px = Box.createHorizontalBox();
p.add(px);
px.add(Box.createHorizontalGlue());
// Select exactly one stooge from a list of four contained
// in a vertical box with a labelled, etched border.
String[] stooges = {
"Moe",
"Larry",
"Curly",
"Joe",
};
Box p3 = Box.createVerticalBox();
p3.setMinimumSize(new Dimension(120,100));
ButtonGroup group = new ButtonGroup();
for (int i=0; i<stooges.length; i++) {
JRadioButton button = new JRadioButton(stooges[i]);
p3.add(button);
group.add(button);
button.addActionListener(
new StoogeChecker(stooges[i],stoogeLabel));
if (i == 0)
button.setSelected(true);
}
Border b3temp = BorderFactory.createEtchedBorder();
Border b3 = BorderFactory.createTitledBorder(b3temp,"Stooges");
p3.setBorder(b3);
px.add(p3);
px.add(Box.createHorizontalGlue());
// Select zero or more dwarfs from a set of check boxes
// contained in a vertical box with a labelled, etched
// border.
String[] dwarfs = {
"Happy",
"Sleepy",
"Dopey",
"Grumpy",
"Sneezy",
"Doc",
"Bashful",
};
Box p4 = Box.createVerticalBox();
p4.setMinimumSize(new Dimension(120,100));
for (int i=0; i<dwarfs.length; i++) {
JCheckBox box = new JCheckBox(dwarfs[i]);
p4.add(box);
box.setSelected(i%2 == 0);
box.addActionListener(
new DwarfChecker(dwarfs[i],box,dwarfLabel));
}
Border b4temp = BorderFactory.createEtchedBorder();
Border b4 = BorderFactory.createTitledBorder(b4temp,"Dwarfs");
p4.setBorder(b4);
px.add(p4);
px.add(Box.createHorizontalGlue());
p.add(Box.createVerticalGlue());
}
}
/**
An ActionListener to watch for changes in a JRadioButton.
*/
class StoogeChecker implements ActionListener
{
public StoogeChecker(String name,JLabel label)
{ this.name = name; this.label = label; }
public void actionPerformed(ActionEvent e)
{ label.setText("Selected " + name); }
private String name;
private JLabel label;
}
/**
An ActionListener to watch for changes in a JCheckBox.
*/
class DwarfChecker implements ActionListener
{
public DwarfChecker(String name,JCheckBox box,JLabel label)
{ this.name = name; this.box = box; this.label = label; }
public void actionPerformed(ActionEvent e)
{ label.setText(name + " -> " + box.isSelected()); }
private String name;
private JCheckBox box;
private JLabel label;
}