Java添加特定于事件的按钮

时间:2016-10-01 10:55:59

标签: java events

你好我已经创建了一个图形计算 在Java中。现在我想添加点击 事件到特定按钮以便 处理数据,我应该添加什么 我的代码?我想拥有 像Javascript中的“onclik”之类的东西。 最大谢谢!

    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

2 个答案:

答案 0 :(得分:2)

您可以使用addActionListener方法 此方法接受ActionListener实例 - 这是一个带有一个方法的接口 - actionPerformed,这将在按下按钮时执行:

例如:

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

有关于挥杆事件处理的教程,如this one,非常好

答案 1 :(得分:1)

您只需要在按钮上添加ActionListener即可触发点击操作,如下所示:

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

How to Write an Action Listener

这相当于onclick所以在您的特定情况下应该足够了,但如果您需要访问更多鼠标事件,则应该添加MouseListener作为下一个:

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