У меня есть JRadioButton с ActionListener, но не могу понять, как вызвать изменение значка для JButton на другой панели при нажатии. Код для обоих приведен ниже. При выборе правильного переключателя изображение должно переключаться с левой кнопки вправо.Изменение значка JButton на основе выбора JRadioButton
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);
}
}
У вас нет кнопки или радиообмена. у вас есть два метода, которые их возвращают. Вам нужны эти методы или вы хотите достичь того, что вы описали выше? Если последнее, см. Ниже, если нет, уточните ваши потребности –
Я добавил полный код. По умолчанию изображение будет отображаться на левой кнопке, и при нажатии правой кнопки переключателя необходимо перейти к правой кнопке. – KMKZ509
его дефинитно не полный код, отсутствует классное деление XD –