2016-10-01 5 views
4

안녕하세요 저는 Java에서 그래픽 계산 을 만들었습니다. 이제 이벤트를 특정 버튼에 추가하여 데이터를 처리하려면 내 코드에 무엇을 추가해야합니까? 나는 같은 것을 자바 스크립트에서 "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 

답변

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

addActionListener 방법을 사용할 수 있습니다.
이 메소드는 ActionListener 인스턴스를 받아 -이 하나의 방법 - actionPerformed, 당신의 버튼을 누를 때 실행됩니다와의 인터페이스 :

예를 들어

:

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

밖에 자습서의 planty 있습니다 this one과 같이 스윙 이벤트 처리에 대해 매우 유용합니다.

+0

감사합니다. 어떻게 이벤트를 "클릭"하도록 지정할 수 있습니까? –

+0

@MaxHunton - 'ActionEvent'는 구성 요소 정의 동작이 발생했음을 나타냅니다. 특히 버튼의 경우, 눌렀다는 것을 의미합니다. –

관련 문제