java 흔한 이벤트 응답 방법 실례 요약
먼저 Java 그래픽 사용자 인터페이스에서 이벤트를 처리하는 데 필요한 단계는 다음과 같습니다.
1. 응답을 받는 구성 요소 만들기 (컨트롤)
2. 관련 이벤트 감청 인터페이스 구현
3. 이벤트 원본을 등록하는 동작 감청기
4. 이벤트 트리거 시 이벤트 처리
상응하는 것은 다음과 같은 집중 방식을 통해 사건 응답을 할 수 있다.
1. 용기류 감청
효과: 창의 세 개의 단추를 누르면 해당하는 시간을 실현합니다.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
// , “implements ActionListener” , ,
// “implements ActionListener,KeyListener”
class ButtonListener extends JFrame implements ActionListener{
JButton ok, cancel,exit; // ,
public ButtonListener(String title){
super(title);
this.setLayout(new FlowLayout());
ok = new JButton(" ");
cancel = new JButton(" ");
exit = new JButton(" ");
//
ok.addActionListener(this);
cancel.addActionListener(this);
exit.addActionListener(this);
getContentPane().add(ok);
getContentPane().add(cancel);
getContentPane().add(exit);
}
//
public void actionPerformed(ActionEvent e){
if(e.getSource()==ok)
System.out.println(" ");
if(e.getSource()==cancel)
System.out.println(" ");
if(e.getSource()==exit)
System.exit(0);;
}
public static void main(String args[]) {
ButtonListener pd=new ButtonListener("ActionEvent Demo");
pd.setSize(250,100);
pd.setVisible(true);
}
}
2. 감청류 실현효과: 창의 세 개의 단추를 누르면 해당하는 시간을 실현합니다.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class ButtonListener1 extends JFrame { //
JButton ok, cancel,exit;
public ButtonListener1(String title){
super(title);
this.setLayout(new FlowLayout());
ok = new JButton(" ");
cancel = new JButton(" ");
exit = new JButton(" ");
ok.addActionListener(new MyListener());
cancel.addActionListener(new MyListener());;
exit.addActionListener(new MyListener());;
getContentPane().add(ok);
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);
}
}
//
class MyListener implements ActionListener{
public void actionPerformed(ActionEvent e){
if(e.getActionCommand()==" ")
System.out.println(" ");
if(e.getActionCommand()==" ")
System.out.println(" ");
if(e.getActionCommand()==" ")
System.exit(0);;
}
}
3. AbstractAction 클래스를 사용하여 감청효과: 메뉴를 클릭하여 응답
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import 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, " ");
}else if (e.getActionCommand()=="close"){
JOptionPane.showMessageDialog(null, " ");
}else if (e.getActionCommand()=="run"){
JOptionPane.showMessageDialog(null, " ");
}else if (e.getActionCommand()=="stop"){
JOptionPane.showMessageDialog(null, " ");
}
}
}
public class TestAbstractEvent {
private static JMenuBar menubar;
private static JFrame frame;
// MenuEvent AbstractEvent 。
final Action MenuEvent=new AbstractEvent();
public TestAbstractEvent(){
frame=new JFrame("menu");
frame.getContentPane().setLayout(new BorderLayout());
menubar=new JMenuBar();
JMenu menuFile=new JMenu("file");
// , openAction,
JMenuItem menuItemopen=new JMenuItem("open");
menuItemopen.addActionListener(MenuEvent);
JMenuItem menuItemclose=new JMenuItem("close");
menuItemclose.addActionListener(MenuEvent);
menuFile.add(menuItemopen);
menuFile.add(menuItemclose);
JMenu menuTool=new JMenu("tool");
JMenuItem menuItemrun=new JMenuItem("run");
menuItemrun.addActionListener(MenuEvent);
JMenuItem menuItemstop=new JMenuItem("stop");
menuItemstop.addActionListener(MenuEvent);
menuTool.add(menuItemrun);
menuTool.add(menuItemstop);
menubar.add(menuFile);
menubar.add(menuTool);
menubar.setVisible(true);
frame.add(menubar,BorderLayout.NORTH);
frame.setSize(400,200);
frame.setVisible(true);
}
public static void main(String[] args){
new TestAbstractEvent();
}
}
4. AbstractAction 클래스 + 반사 방법효과: 도구 모음의 세 개의 단추를 누르면 단추의 이름을 통해 단추의 이름과 같은 클래스로 응답을 반사합니다.
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import javax.swing.*;
class ViewAction extends AbstractAction{
private String ActionName="";
//private JFrame frame=null;
private Action action=null;
public ViewAction(){
}
public ViewAction(String ActionName){
this.ActionName=ActionName;
//this.frame=frame;
}
@Override
public 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;
}catch(Exception e){
return null;
}
}
}
public class TestAE extends JFrame {
public JToolBar bar=new JToolBar();
String buttonName[]={"b1","b2","b3"};
public TestAE(){
super(" ");
for (int i=0;i<buttonName.length;i++){
ViewAction action=new ViewAction(buttonName[i]);
JButton button=new JButton(buttonName[i]);
button.addActionListener(action);
bar.add(button);
}
this.getContentPane().add(bar,BorderLayout.NORTH);
this.setSize(300, 200);
this.setLocationRelativeTo(null);
this.setVisible(true);
}
public static void main(String [] args){
new TestAE();
}
}
interface Action{
void execute();
}
class b1 implements Action{
public void execute(){
JOptionPane.showMessageDialog(null, " b1");
}
}
class b2 implements Action{
public void execute(){
JOptionPane.showMessageDialog(null, " b2");
}
}
class b3 implements Action{
public void execute(){
JOptionPane.showMessageDialog(null, " b3");
}
}
상술한 실례는 비교적 상세한 주석을 갖추고 있으니 이해하기 어렵지 않을 것이다.본고에서 서술한 실례가 모두에게 도움이 될 수 있기를 바랍니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.