#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) {
...
}
}
);