less..
//class 1 package JavaEventMdel;
import javax.swing.*; import java.awt.event.ActionListener; import javax.swing.border.EtchedBorder; import java.awt.Container; import java.awt.BorderLayout;
import java.util.*;
public class EventCreator extends JFrame { JButton btnBook; //이벤트를 발생시키는 GUI객체 JButton btnExit; public EventCreator() throws Exception { try { EventConsumer ec = new EventConsumer(); //이벤트리스터 클래스의 인스턴스 생성 setBounds(150,200,500,250); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); BorderLayout border = new BorderLayout(); Container content = getContentPane(); content.setLayout(border); btnBook = new JButton("Book"); //버튼 인스턴스 생성 btnExit = new JButton("Exit"); btnBook.addActionListener(ec); //이벤트 처리클래스를 위한 addActionListener()호출 btnExit.addActionListener(ec); JPanel bottomPanel = new JPanel(); bottomPanel.add(btnBook); bottomPanel.add(btnExit); content.add(bottomPanel, BorderLayout.SOUTH); setVisible(true); } catch(Exception e) { System.out.println("Exception thrown " +e); } } public static void main(String[] args) { try { EventCreator mainWindow = new EventCreator(); } catch(Exception e) { System.out.println("Exception int main " + e); } } }//class2 package JavaEventMdel;
import javax.swing.*; import java.awt.event.ActionListener; import javax.swing.border.EtchedBorder; import java.awt.Container; import java.awt.BorderLayout;
import java.util.*;
public class EventConsumer implements ActionListener { JButton btnBook; JButton btnExit; public EventConsumer() throws Exception {} //생성자 메소드 public void actionPerformed(java.awt.event.ActionEvent ae) { if(ae.getActionCommand().equals("Exit")) { System.out.println("Exit was clicked"); } if(ae.getActionCommand().equals("Book")) { //티켓 예약 System.out.println("Book was clicked"); } } } = 버튼을 클릭하면 JButton코드는 ActionEvent객체를 생성한다. 그리고 컴포넌트를 위한 리스너가 누군지 알아내기 위해 리스너 목록을 본다. 리스트의 리스너 중 JButton은 ActionEvent인터페이스를 구현한 리스너를 선택한다. 그리고 리스너의 actionPerformed()메소드 중에 하나를 호출한다.
less..
less..
package JavaEventMdel;
import javax.swing.*; import java.awt.event.ActionListener; import javax.swing.border.EtchedBorder; import java.awt.Container; import java.awt.BorderLayout;
import java.util.*;
//클래스 그 자체의 선언은 추가적인 인터페이스를 구현하는 것으로 변한다. public class EventCreator2 extends JFrame implements ActionListener { JButton btnBook; JButton btnExit; public EventCreator2() throws Exception { try { System.out.println("EventCreator2 executing"); setBounds(150,200,500,250); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); BorderLayout border = new BorderLayout(); Container content = getContentPane(); content.setLayout(border); btnBook = new JButton("Book"); btnExit = new JButton("Exit"); btnBook.addActionListener(this); //다른 클래스를 사용하는 대신에 이 클래스를 이용한다. btnExit.addActionListener(this); JPanel bottomPanel = new JPanel(); bottomPanel.add(btnBook); bottomPanel.add(btnExit); content.add(bottomPanel, BorderLayout.SOUTH); setVisible(true); } catch(Exception e) { System.out.println("Exception thrown " + e); } } //actionPerformed() 메소드 public void actionPerformed(java.awt.event.ActionEvent ae) { if(ae.getActionCommand().equals("Exit")) { System.out.println("Exit was clicked2"); } //티켓 예약 if(ae.getActionCommand().equals("Book")) { System.out.println("Book was clicked2"); } } public static void main(String[] args) { try { EventCreator2 mainWindow = new EventCreator2(); } catch(Exception e) { System.out.println("Exception in main " + e); } } }
less..