이 기사의 예제에는 컨테이너 클래스 모니터링, 리스너 클래스, AbstractAction, 리플렉션 등을 포함하여 Java의 일반적인 이벤트 응답 메서드가 요약되어 있습니다. 당신의 참고를 위해. 구체적인 방법은 다음과 같습니다.
우선, Java 그래픽 사용자 인터페이스에서 이벤트를 처리하는 데 필요한 단계는 다음과 같습니다 .
1. 응답을 받아들이는 구성 요소(컨트롤)를 만듭니다.
2. 관련 이벤트 청취 인터페이스 구현
3. 이벤트 소스의 액션 리스너를 등록합니다.
4. 이벤트 발생 시 이벤트 처리
이에 따라 다음과 같은 중앙 집중식으로 사고 대응이 가능하다.
1. 컨테이너 클래스 모니터링 <br/>효과: 해당 응답 시간을 얻으려면 양식에서 세 개의 버튼을 클릭하세요.
import java.awt.*; import javax.swing.*; //클래스를 선언할 때 청취 인터페이스를 구현하려면 "implements ActionListener"를 추가하세요. 그런 다음 쉼표로 구분합니다. // 예를 들어 "implements ActionListener,KeyListener" class ButtonListener extends JFrame Implements ActionListener{ JButton ok, cancel,exit //3개의 버튼인 응답을 허용하는 구성 요소를 생성합니다. ButtonListener(String title){ super(title); this.setLayout(new FlowLayout()); ok = new JButton("OK"); cancel = new JButton("Return"); ; //다음 세 가지 명령문은 버튼에 대한 리스너를 등록합니다. ok.addActionListener(this) cancel.addActionListener(this); getContentPane().add(ok); getContentPane().add(exit) } //이벤트가 트리거될 때 이벤트 처리 완료 public void actionPerformed(ActionEvent e){ if(e. getSource ()==ok) System.out.println("OK") if(e.getSource()==cancel) System.out.println("Return"); if(e.getSource()==exit) System.exit(0);; } public static void main(String args[]) { ButtonListener pd=new ButtonListener("ActionEvent Demo"); pd.setVisible(true) } }
2. 모니터링 클래스가 효과를 실현합니다 . 양식에서 세 개의 버튼을 클릭하면 해당 시간이 실현됩니다.
import java.awt.*; import javax.swing.*; class ButtonListener1 extends JFrame { //여기에는 JButton 모니터링 구현이 없습니다. public ButtonListener1(String title) { super( title); this.setLayout(new FlowLayout()); ok = new JButton("OK"); cancel = new JButton("Return"); = new JButton("종료"); ok.addActionListener(new MyListener()); exit.addActionListener(new MyListener());; getContentPane().add(cancel); getContentPane().add(exit) } public static void main(String args[]) { ButtonListener pd=new ButtonListener("ActionEvent Demo"); pd.setSize(250,100); pd.setVisible(true) } } //액션 이벤트 듣기 클래스 MyListener가 ActionListener를 구현합니다.{ public void actionPerformed(ActionEvent e){ if( e .getActionCommand()=="OK") System.out.println("OK"); if(e.getActionCommand()=="Return") System.out.println("Return"); if(e.getActionCommand()=="Exit") System.exit(0) } }
3. AbstractAction 클래스를 사용하여 모니터링 구현
효과: 메뉴를 클릭하면 응답합니다.
import java.awt.event.ActionEvent; import javax.swing.Action; import javax.swing.JMenu; ; 가져오기 javax.swing.JMenuItem; 가져오기 javax.swing.JOptionPane; //이 클래스는 AbstractAction을 상속하며 actionPerformed() 메서드를 구현해야 합니다. class AbstractEvent extends AbstractAction{ //private static final long serialVersionUID = 1L; AbstractEvent(){ } public void actionPerformed(ActionEvent e){ //팝업 확인 대화 상자 if (e.getActionCommand()=="open"){ JOptionPane . showMessageDialog(null, "open"); }else if (e.getActionCommand()=="close"){ JOptionPane.showMessageDialog(null, "닫기"); }else if (e.getActionCommand()=="run"){ JOptionPane.showMessageDialog(null, "실행") }else if (e.getActionCommand()==" stop"){ JOptionPane.showMessageDialog(null, "stop"); } } } public class TestAbstractEvent { private static JMenuBar menubar; //MenuEvent를 지정하기 위한 특정 핸들러는 AbstractEvent 클래스에 의해 완성됩니다. 최종 조치 MenuEvent=new AbstractEvent(){ 프레임=new JFrame("menu");frame.getContentPane().setLayout(new BorderLayout()); ("file"); //메뉴 항목을 인스턴스화하고 openAction에 대한 리스너를 추가합니다. JMenuItem menuItemopen=new JMenuItem("open"); JMenuItem menuItemclose=new JMenuItem("close"); menuItemclose.add(menuItemopen); "); JMenuItem menuItemrun=new JMenuItem("run"); JMenuItem menuItemstop=new JMenuItem("stop"); menuTool.add(menuItemrun); .add(메뉴파일); menubar.add(menuTool); menubar.setVisible(true); 프레임.setSize(400,200); public static void main(String[] args) { 새로운 TestAbstractEvent() } }
4. AbstractAction 클래스 + 리플렉션 메서드 <br/>효과: 툴바에서 세 개의 버튼을 클릭하면 버튼 이름을 통해 리플렉션이 버튼과 동일한 이름의 클래스 구현 응답을 받습니다.
import java.awt.borderLayout; import javax.swing.*; 클래스 ViewAction { private String ActionName=""; private Action=null; ViewAction(){ } 공개 ViewAction(String ActionName){ this.ActionName=ActionName; //this.frame=frame } @Override 공개 void; actionPerformed(ActionEvent e) { Action action=getAction(this.ActionName); action.execute(); } private Action getAction(String ActionName){ try{ if (this.action==null){ Action action=(Action)Class .forName(ActionName).newInstance(); this.action=action; } return this.action(Exception e){ return null } } } JFrame 확장 { public JToolBar bar=new JToolBar(); String ButtonName[]={"b1","b2","b3"} public TestAE(){ super("Event"); i<buttonName.length;i++){ ViewAction action=new ViewAction(buttonName[i]) JButton 버튼=new JButton(buttonName[i]); Button.addActionListener(action); bar.add(button); } this.getContentPane().add(bar,BorderLayout.NORTH); this.setLocationRelativeTo(null); true); } 공개 정적 void main(String [] args){ new TestAE() } } 인터페이스 Action{ void 실행(); } 클래스 b1은 Action을 구현합니다.{ public voidexecute(){ JOptionPane.showMessageDialog(null, "b1이 클릭되었습니다.") } } 클래스 b2는 Action을 구현합니다. 클릭됨"); } } 클래스 b3은 Action{ public void excute(){ JOptionPane.showMessageDialog(null, "Clicked)를 구현합니다. b3"); } }
위의 예는 잘 설명되어 있으므로 이해하기 어렵지 않아야 합니다. 이 기사에 설명된 예제가 모든 사람에게 도움이 되기를 바랍니다.