Java Добавить кнопки, зависящие от события

#java #events

#java #Мероприятия

Вопрос:

Здравствуйте, я создал графический калькулятор на Java. Теперь я хотел бы добавить события нажатия на определенные кнопки для обработки данных, что я должен добавить в свой код? Я хотел бы иметь что-то вроде «onclik» в Javascript. Макс, спасибо!

     import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;

public class Fenetre extends JFrame{
  private JPanel pan = new JPanel();
  private JButton bouton1 = new JButton("C");
  private JButton bouton2 = new JButton(" ");
  private JButton bouton3 = new JButton("-");
  private JButton bouton4 = new JButton("*");
  private JButton bouton5 = new JButton("/");

  private JButton bouton6 = new JButton("1");
  private JButton bouton7 = new JButton("2");
  private JButton bouton8 = new JButton("3");
  private JButton bouton9 = new JButton("4");
  private JButton bouton10 = new JButton("5");
  private JButton bouton11 = new JButton("6");
  private JButton bouton12 = new JButton("7");
  private JButton bouton13 = new JButton("8");
  private JButton bouton14 = new JButton("9");
  private JButton bouton15 = new JButton("0");
  private JButton bouton16 = new JButton(".");
  private JButton bouton17 = new JButton("=");


  private JLabel ecran = new JLabel();

  public Fenetre(){
    ecran = new JLabel("0");
    this.setTitle("Calculatrice");
    this.setSize(300, 450);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setLocationRelativeTo(null);
    //Ajout du bouton à notre content pane
    pan.setLayout(null);
    ecran.setBounds(100,2,100,60);

    bouton1.setBounds(220,60,60,60);
    bouton2.setBounds(220,130,60,60);
    bouton3.setBounds(220,200,60,60);
    bouton4.setBounds(220,270,60,60);
    bouton5.setBounds(220,340,60,60);

    bouton6.setBounds(10,60,60,60);
    bouton7.setBounds(80,60,60,60);
    bouton8.setBounds(150,60,60,60);
    bouton9.setBounds(10,130,60,60);
    bouton10.setBounds(80,130,60,60);
    bouton11.setBounds(150,130,60,60);

    bouton12.setBounds(10,200,60,60);
    bouton13.setBounds(80,200,60,60);
    bouton14.setBounds(150,200,60,60);

    bouton15.setBounds(10,270,60,60);
    bouton16.setBounds(80,270,60,60);
    bouton17.setBounds(150,270,60,60);

    pan.add(ecran);
    pan.add(bouton1);
    pan.add(bouton2);
    pan.add(bouton3);
    pan.add(bouton4);
    pan.add(bouton5);
    pan.add(bouton6);
    pan.add(bouton7);
    pan.add(bouton8);
    pan.add(bouton9);
    pan.add(bouton10);
    pan.add(bouton11);
    pan.add(bouton12);
    pan.add(bouton13);
    pan.add(bouton14);
    pan.add(bouton15);
    pan.add(bouton16);
    pan.add(bouton17);
    this.setContentPane(pan);
    this.setVisible(true);
  }       
}enter code here
  

Ответ №1:

Вы можете использовать метод addActionListener.
этот метод принимает ActionListener экземпляр — это интерфейс с одним методом-
actionPerformed, он будет выполнен при нажатии вашей кнопки:

Например:

 b1.addActionListener(
    new ActionListener() {
        @Override
        public void actionPerformed(final ActionEvent e) {
            // do whatever
        }
    }
);
  

Существует множество руководств по обработке событий swing, например, этот, который довольно хорош

Комментарии:

1. Спасибо, как я могу указать, что событие является «щелчком»?

2. @MaxHunton — ActionEvent указывает, что произошло определенное компонентом действие. В частности, для кнопки это означает, что она была нажата

Ответ №2:

Вам просто нужно добавить ActionListener к кнопкам, которые должны вызывать действие при нажатии, что-то вроде этого:

 bouton1.addActionListener(
    new ActionListener() {
        @Override
        public void actionPerformed(final ActionEvent e) {
            // do something here
        }
    }
);
  

Как написать прослушиватель действий

Это эквивалентно onclick , поэтому в вашем конкретном случае этого должно быть достаточно, но если вам нужен доступ к большему количеству событий мыши, вам лучше добавить a MouseListener как next:

 bouton1.addMouseListener(
    new MouseListener() {
        @Override
        public void mouseClicked(final MouseEvent e) {
            ...
        }

        @Override
        public void mousePressed(final MouseEvent e) {
            ...
        }

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

        @Override
        public void mouseEntered(final MouseEvent e) {
            ...
        }

        @Override
        public void mouseExited(final MouseEvent e) {
            ...
        }
    }
);