Правое нажатие на JButton

пытаясь добавить mouseAdapter в JButton для правого щелчка, чтобы отметить ячейку. Проблема в том, что я создаю его на кнопку, это не позволит мне. Может быть, потому, что на нем уже есть actionlistener? Я не слишком уверен. Любая помощь приветствуется. Я создаю игру Minesweeper, fyi.

button = new JButton[size][size]; ButtonListener bl = new ButtonListener(); for (int r = 0; r < size; r++) { for (int c = 0; c < size; c++) { button[r][c] = new JButton(""); button[r][c].addActionListener(bl); button[r][c].addMouseListener (new MouseAdapter());`` // error message: cannot instantiate the type MouseAdapter panel.add(button[r][c]); 

в конце концов, если это сработает, я хочу включить это в игру:

 button.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (e.getButton() == 3) { // if right click button.setText("F"); button.getModel().setPressed(false); // button.setEnabled(true); } else { button.setText("X"); button.getModel().setPressed(true); // button.setEnabled(false); } } }); 

    Для игры Minesweeper вы ищете

    1) JToggleButton

    2) добавить JToggleButton методы JToggleButton

    • JToggleButton#setIcon();

    • JToggleButton#setSelectedIcon();

    • JToggleButton#setDisabledIcon();

    3) добавить MouseListener в JToggleButton

    4) переопределить mouseClicked с помощью метода SwingUtilities.isRightMouseButton() внутри

    результатом может быть

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

    от кода

     import java.awt.Insets; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.Icon; import javax.swing.JFrame; import javax.swing.JToggleButton; import javax.swing.SwingUtilities; import javax.swing.UIManager; public class MyToggleButton 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 MyToggleButton() { final JToggleButton toggleButton = new JToggleButton(); toggleButton.setBorderPainted(false); toggleButton.setBorder(null); toggleButton.setFocusable(false); toggleButton.setMargin(new Insets(0, 0, 0, 0)); toggleButton.setContentAreaFilled(false); toggleButton.setIcon((errorIcon)); toggleButton.setSelectedIcon(infoIcon); //toggleButton.setRolloverIcon((infoIcon)); //toggleButton.setPressedIcon(warnIcon); toggleButton.setDisabledIcon(warnIcon); toggleButton.addMouseListener(new MouseListener() { public void mouseClicked(MouseEvent e) { if (SwingUtilities.isRightMouseButton(e) && e.getClickCount() == 1) { if (toggleButton.isEnabled()) { toggleButton.setEnabled(false); } else { toggleButton.setEnabled(true); } } } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } }); add(toggleButton); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); pack(); setVisible(true); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { MyToggleButton t = new MyToggleButton(); } }); } } 

    MouseAdapter – абстрактный class, и вы не можете создавать его экземпляры. Вот почему вы получаете ошибку.

     button[r][c].addMouseListener (new MouseAdapter()); // this will not work button[r][c].addMouseListener (new MouseAdapter(){}); // this will ^ button[r][c].addMouseListener (new MouseAdapter(){ public void mouseClicked(MouseEvent e){ // and this will actually do sth. ; ) } }); 
    Interesting Posts

    Последствия использования ноутбука всегда в качестве сервера

    Установка рабочего каталога для вставки изображения в PowerPoint

    Получить имена всех ключей в коллекции

    Установка свойства изображения UIImageView вызывает серьезное отставание

    Избегайте перенаправления реестра Wow6432Node

    предоставить удаленный доступ к базе данных MySQL с любого IP-адреса

    как отправить строку с Android на ПК через Wi-Fi

    Tomcat 7 – Плагин Maven?

    Какие блокирующие операции заставляют stream STA накачивать сообщения COM?

    Предоставленная схема URI «https» недействительна; ожидаемый «http». Имя параметра: через

    Найти устройство в Windows на основе идентификаторов объектов физического устройства (PDO)

    Какие бесплатные онлайн-альтернативы существуют на FrontPage?

    Включить SSL для моей службы WCF

    Настройка двойного тройного монитора

    Как использовать символы Unicode в командной строке Windows?

    Давайте будем гением компьютера.