Несколько кнопок мыши - PullRequest
       12

Несколько кнопок мыши

0 голосов
/ 03 ноября 2018

Это мой код:

package saaaaaaaaaa;

public class xd {
    public static JFrame frame = new JFrame("Halo");
    public static JLabel lab = new JLabel("learning ",JLabel.CENTER);
    public static JButton but = new JButton("but");
    public static JButton but1 = new JButton("butt");
    public static CustomAct act = new CustomAct(lab);

    public static void main(String[] args) {
        but.addMouseListener(act);
        but1.addMouseListener(act);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(640, 480);
        frame.setLayout(new BorderLayout());
        frame.setResizable(false);
        frame.add(lab, BorderLayout.CENTER);
        frame.add(but, BorderLayout.SOUTH);
        frame.add(but1, BorderLayout.NORTH);
    }
}

Это дополнительный класс для щелчка мышью, мне нужно 2 раза щелкнуть мышью для 2 кнопок.

package saaaaaaaaaa;

public class CustomAct implements MouseListener {
    private static final long serialVersionUID = 1L;
    private String halo = "this is ";
    private int getClickCount = 1;
    private JLabel lab;
    private JLabel lab1;

    public CustomAct(JLabel lab) {
        this.lab = lab;
    }

    public void mouseClicked(MouseEvent e) {
        if(e.getSource()==but) {
            lab.setText("cau"+getClickCount++);
        }
    }

    @Override
    public void mouseEntered(MouseEvent e) {
    }

    @Override
    public void mouseExited(MouseEvent e) {
    }

    @Override
    public void mousePressed(MouseEvent e) {
    }

    @Override
    public void mouseReleased(MouseEvent e) {
    }
}

Как я могу сделать несколько кнопок для каждого отдельного действия щелчка мышью?

Как узнать идентификатор используемой кнопки?

Это if(e.getSource()==but) ---, но не может быть преобразовано в переменную

Я действительно не знаю, как это сделать.

1 Ответ

0 голосов
/ 03 ноября 2018

Прежде всего, вы не используете MouseListener для прослушивания нажатий на кнопку.

Вместо этого вы должны использовать ActionListener.

Если Action для каждой кнопки не имеет отношения, то вам нужно создать отдельный ActionListener для каждой кнопки с каждым ActionListener, содержащим определенный код для кнопки. Например, методы «Добавить» и «Вычесть» простого калькулятора потребуют отдельного Action.

Если Action связан, то вы должны создать общий ActionListener, которым могут поделиться кнопки. Например, ввод цифр 0, 1, 2, ... может быть общим ActionListener. Для рабочего примера такого подхода посмотрите: Как добавить комбинацию клавиш для кнопки в java?

Кроме того, вы НЕ должны использовать статические переменные. Вместо этого вам следует создать класс, который расширяет JPanel, где вы определяете все свои переменные и компоненты Swing. ActionListeners также будут определены в этом классе, чтобы они могли обновлять метки по мере необходимости.

...