/**
* MusicPreference.java
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MusicPreference extends JFrame {
private JLabel prompt;
private JLabel message;
private JRadioButton rapButton, jazzButton,
popButton, classicButton;
private ButtonGroup musicGroup;
private JPanel promptPanel;
private JPanel selectPanel;
public MusicPreference()
{
super("Listen to the music");
Container container =
getContentPane();
container.setLayout(new
FlowLayout());
// Panel for prompt, default
of FlowLayout is fine
promptPanel = new JPanel();
prompt = new JLabel("What
type of music do you like?");
promptPanel.add(prompt);
// Panel for selection, want
grid for this one, 1 column
selectPanel = new JPanel();
selectPanel.setLayout(new
GridLayout(0, 1));
// create radio buttons
rapButton = new
JRadioButton("Rap", false);
jazzButton = new
JRadioButton("Jazz", true); // this is default
popButton = new
JRadioButton("Pop", false);
classicButton = new
JRadioButton("Classical", false);
// create logical
relationship between buttons
musicGroup = new
ButtonGroup();
musicGroup.add(rapButton);
musicGroup.add(jazzButton);
musicGroup.add(popButton);
musicGroup.add(classicButton);
// register event handlers,
each one has its own handler
rapButton.addItemListener(new MusicButtonHandler("Yo mama"));
jazzButton.addItemListener(new MusicButtonHandler("Snazzy"));
popButton.addItemListener(new MusicButtonHandler("Top 40 forever!"));
classicButton.addItemListener(new MusicButtonHandler("Amadeus
Amadeus"));
// Set first message, based
on Jazz selection
message = new
JLabel("Snazzy!");
// put components into
container
container.add(promptPanel);
selectPanel.add(rapButton);
selectPanel.add(jazzButton);
selectPanel.add(popButton);
selectPanel.add(classicButton);
container.add(selectPanel);
container.add(message);
setSize(265,200);
setVisible(true);
} // end constructor
public static void main(String[] args)
{
MusicPreference app = new
MusicPreference();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private class MusicButtonHandler implements
ItemListener {
private String msg;
public
MusicButtonHandler(String newMessage)
{
msg
= newMessage;
}
public void
itemStateChanged(ItemEvent event)
{
message.setText(msg);
}
} // end class MusicButtonHandler
} // end class MusicPreference