Joona I Palaste said:
I think you are missing the point. The purpose is not to show that Liz
has already done some work - she's given proof of it already - but to
help *us* better diagnose the problem, by actually being able to
compile and run her code, and everything.
--
/-- Joona Palaste (
[email protected]) ------------- Finland --------\
\--
http://www.helsinki.fi/~palaste --------------------- rules! --------/
"To err is human. To really louse things up takes a computer."
- Anon
Ok, I think I found the problem and it doesn't seem like a problem anymore.
It seems like the color inside the circle which is the 'on' indicator is the
same color as the Background color when 'on' is set to false, and the same
color as the Foreground color when 'on' is set to true. Instead of hacking
my
21K line program, I got a copy of "RadioButtonDemo.java" from the sun
tutorial
and modified it.
------------------
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class RadioButtonDemo extends JPanel {
static JFrame frame;
static String birdString = "Bird";
static String catString = "Cat";
static String dogString = "Dog";
static String rabbitString = "Rabbit";
static String pigString = "Pig";
JLabel picture;
public RadioButtonDemo() {
// Create the radio buttons.
JRadioButton birdButton = new JRadioButton(birdString);
birdButton.setBackground(Color.red);
birdButton.setMnemonic(KeyEvent.VK_B);
birdButton.setActionCommand(birdString);
birdButton.setSelected(true);
JRadioButton catButton = new JRadioButton(catString);
catButton.setBackground(Color.red);
catButton.setMnemonic(KeyEvent.VK_C);
catButton.setActionCommand(catString);
JRadioButton dogButton = new JRadioButton(dogString);
dogButton.setBackground(Color.red);
dogButton.setForeground(Color.blue);
dogButton.setMnemonic(KeyEvent.VK_D);
dogButton.setActionCommand(dogString);
JRadioButton rabbitButton = new JRadioButton(rabbitString);
rabbitButton.setBackground(new Color(0x006e00));
rabbitButton.setForeground(new Color(0xffffff));
rabbitButton.setMnemonic(KeyEvent.VK_R);
rabbitButton.setActionCommand(rabbitString);
JRadioButton pigButton = new JRadioButton(pigString);
pigButton.setBackground(Color.red);
pigButton.setMnemonic(KeyEvent.VK_P);
pigButton.setActionCommand(pigString);
// Group the radio buttons.
ButtonGroup group = new ButtonGroup();
group.add(birdButton);
group.add(catButton);
group.add(dogButton);
group.add(rabbitButton);
group.add(pigButton);
// Register a listener for the radio buttons.
RadioListener myListener = new RadioListener();
birdButton.addActionListener(myListener);
catButton.addActionListener(myListener);
dogButton.addActionListener(myListener);
rabbitButton.addActionListener(myListener);
pigButton.addActionListener(myListener);
// Set up the picture label
picture = new JLabel(new ImageIcon(""
+ birdString
+ ".gif"));
// The preferred size is hard-coded to be the width of the
// widest image and the height of the tallest image.
// A real program would compute this.
picture.setPreferredSize(new Dimension(177, 122));
// Put the radio buttons in a column in a panel
JPanel radioPanel = new JPanel();
radioPanel.setLayout(new GridLayout(0, 1));
radioPanel.add(birdButton);
radioPanel.add(catButton);
radioPanel.add(dogButton);
radioPanel.add(rabbitButton);
radioPanel.add(pigButton);
setLayout(new BorderLayout());
add(radioPanel, BorderLayout.WEST);
add(picture, BorderLayout.CENTER);
setBorder(BorderFactory.createEmptyBorder(20,20,20,20));
}
/** Listens to the radio buttons. */
class RadioListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
picture.setIcon(new ImageIcon(""
+ e.getActionCommand()
+ ".gif"));
}
}
public static void main(String s[]) {
frame = new JFrame("RadioButtonDemo");
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {System.exit(0);}
});
frame.getContentPane().add(new RadioButtonDemo(),
BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
}