установить и отключить иконки JToggleButton

Привет, я пытаюсь создать соответствующую игру памяти, в которой я использую JToggleButton. главное, когда я нажимаю кнопку, он должен показывать картинку, и я должен найти другую ту же картинку. поэтому проблема заключается в том, когда я создаю кнопку без каких-либо значков, я не могу использовать другие другие методы, например .setRollOverIcon() , .setPressedIcon() и т. д., поэтому я оценил, можете ли вы мне помочь. и спасибо в любом случае 🙂

 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ButtonsIcon extends JFrame { private static final long serialVersionUID = 1L; private ImageIcon errorIcon = (ImageIcon) UIManager.getIcon("OptionPane.errorIcon"); private ImageIcon infoIcon = (ImageIcon) UIManager.getIcon("OptionPane.informationIcon"); private ImageIcon warnIcon = (ImageIcon) UIManager.getIcon("OptionPane.warningIcon"); public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { ButtonsIcon t = new ButtonsIcon(); } }); } public ButtonsIcon() { setLayout(new GridLayout(1, 1, 4, 4)); final JToggleButton toggleButton = new JToggleButton(); //toggleButton.setIcon((errorIcon)); toggleButton.setRolloverIcon((infoIcon)); toggleButton.setPressedIcon(warnIcon); toggleButton.setDisabledIcon(warnIcon); toggleButton.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { if (toggleButton.isSelected()) { } else { } } }); add(toggleButton); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); pack(); setVisible(true); } } 

Один из подходов состоит в том, чтобы сделать следующее:

  • Используйте выбранное состояние, чтобы указать, показывать или скрывать Icon .
  • Используйте включенное состояние, чтобы указать, что пара была сопоставлена.

Схема кода:

 /** Handle ItemEvents. */ @Override public void itemStateChanged(ItemEvent e) { GameButton gb = (GameButton) e.getItem(); gb.setState(); } /** Remove a and b from play. */ private void retirePair(GameButton a, GameButton b) { a.setSelected(true); a.setEnabled(false); b.setSelected(true); b.setEnabled(false); } class GameButton extends JToggleButton { ... public void setState() { if (this.isSelected() || !this.isEnabled()) { this.setIcon(icon); } else { this.setIcon(hidden); } } } 

1) для JToggleButton лучше реализовать ItemListener

2) здесь SSCCE

введите описание изображения здесь

 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ButtonsIcon extends JFrame { private static final long serialVersionUID = 1L; private Icon errorIcon = UIManager.getIcon("OptionPane.errorIcon"); private Icon infoIcon = UIManager.getIcon("OptionPane.informationIcon"); private Icon warnIcon = UIManager.getIcon("OptionPane.warningIcon"); public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { ButtonsIcon t = new ButtonsIcon(); } }); } public ButtonsIcon() { setLayout(new GridLayout(2, 2, 4, 4)); JButton button = new JButton(); button.setBorderPainted(false); button.setBorder(null); button.setFocusable(false); button.setMargin(new Insets(0, 0, 0, 0)); button.setContentAreaFilled(false); button.setIcon((errorIcon)); button.setRolloverIcon((infoIcon)); button.setPressedIcon(warnIcon); button.setDisabledIcon(warnIcon); add(button); JButton button1 = new JButton(); button1.setBorderPainted(false); button1.setBorder(null); button1.setFocusable(false); button1.setMargin(new Insets(0, 0, 0, 0)); button1.setContentAreaFilled(false); button1.setIcon((errorIcon)); button1.setRolloverIcon((infoIcon)); button1.setPressedIcon(warnIcon); button1.setDisabledIcon(warnIcon); add(button1); button1.setEnabled(false); final JToggleButton toggleButton = new JToggleButton(); toggleButton.setIcon((errorIcon)); toggleButton.setRolloverIcon((infoIcon)); toggleButton.setPressedIcon(warnIcon); toggleButton.setDisabledIcon(warnIcon); toggleButton.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { if (toggleButton.isSelected()) { } else { } } }); add(toggleButton); final JToggleButton toggleButton1 = new JToggleButton(); toggleButton1.setIcon((errorIcon)); toggleButton1.setRolloverIcon((infoIcon)); toggleButton1.setPressedIcon(warnIcon); toggleButton1.setDisabledIcon(warnIcon); toggleButton1.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { if (toggleButton1.isSelected()) { } else { } } }); add(toggleButton1); toggleButton1.setEnabled(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); pack(); setVisible(true); } } 
  • создание зачеркнутого текста?
  • Как сделать AWT Button () и использовать ImageIcon (), Icon ()?
  • Картина не клиента на окне аэрозона
  • JButton ActionListener - обновление GUI только после нажатия JButton
  • Как определить направление движения между левым / правым и вверх / вниз
  • Доступ к компонентам GUI из другого classа
  • SwingWorker, Thread.sleep () или javax.swing.timer? Мне нужно «вставить паузу»,
  • Подвижные столбцы со значением с помощью java
  • Qt сигнализирует по streamам, один - stream GUI?
  • Добавьте n прямоугольников в canvas с MVVM в WPF
  • Отключить ключ ускорителя ярлыков WPF (текст подчеркивания отсутствует)
  • Давайте будем гением компьютера.