I have a JRadioButton with an ActionListener but cannot figure out how to trigger an icon change for a JButton in a different panel when it's clicked. The code for both is listed below. The image needs to switch from the left button to the right when the correct radio button is selected.
package gui;
public class ExampleGUI extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel contentPane;
ImageIcon icon = new ImageIcon(ExampleGUI.class
.getResource("/gui/schlange1.gif"));
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
ExampleGUI frame = new ExampleGUI();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public ExampleGUI() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 5));
setContentPane(contentPane);
JLabel lblExampleGui = new JLabel("Example GUI");
lblExampleGui.setFont(new Font("Tahoma", Font.PLAIN, 18));
lblExampleGui.setHorizontalAlignment(SwingConstants.CENTER);
contentPane.add(lblExampleGui, BorderLayout.NORTH);
JPanel radioButtonPanel = new JPanel();
contentPane.add(radioButtonPanel, BorderLayout.SOUTH);
JPanel imagePanelBoxes = mainImagePanel();
contentPane.add(imagePanelBoxes, BorderLayout.CENTER);
JButton leftImage = leftClickImage();
imagePanelBoxes.add(leftImage);
JButton rightImage = rightClickImage();
imagePanelBoxes.add(rightImage);
JRadioButton leftRadioButton = leftRadioButton();
radioButtonPanel.add(leftRadioButton);
JRadioButton rightRadioButton = rightRadioButton();
radioButtonPanel.add(rightRadioButton);
ButtonGroup group = new ButtonGroup();
group.add(leftRadioButton);
group.add(rightRadioButton);
}
private JPanel mainImagePanel() {
JPanel imagesPanel = new JPanel();
imagesPanel.setBorder(new EmptyBorder(0, 5, 0, 5));
imagesPanel.setLayout(new GridLayout(0, 2, 10, 0));
return imagesPanel;
}
private JRadioButton leftRadioButton() {
final JRadioButton leftRadioButton = new JRadioButton("LEFT");
leftRadioButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
changeIcon(leftClickImage(), icon);
}
});
leftRadioButton.setSelected(true);
return leftRadioButton;
}
private JRadioButton rightRadioButton() {
final JRadioButton rightRadioButton = new JRadioButton("RIGHT");
rightRadioButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
changeIcon(rightClickImage(), icon);
}
});
rightRadioButton.isSelected();
return rightRadioButton;
}
private JButton leftClickImage() {
JButton leftImage = new JButton("");
leftImage.setIcon(new ImageIcon(ExampleGUI.class
.getResource("/gui/schlange1.gif")));
leftImage.setBackground(Color.BLACK);
return leftImage;
}
private JButton rightClickImage() {
final JButton rightImage = new JButton("");
rightImage.setBackground(Color.BLACK);
return rightImage;
}
public void changeIcon(JButton jb, ImageIcon icon) {
jb.setIcon(icon);
}
}