Os exemplos neste artigo resumem métodos comuns de resposta a eventos em Java, incluindo monitoramento de classe de contêiner, classes de ouvinte, AbstractAction, reflexão, etc. Para sua referência. Os métodos específicos são os seguintes:
Em primeiro lugar, na interface gráfica do usuário Java, as etapas necessárias para lidar com eventos são :
1. Crie um componente (controle) que aceite respostas
2. Implementar interfaces de escuta de eventos relevantes
3. Registre o ouvinte de ação da fonte do evento
4. Processamento de eventos quando o evento é acionado
Consequentemente, a resposta a incidentes pode ser feita da seguinte maneira centralizada.
1. Monitoramento de classe de contêiner <br/>Efeito: clique em três botões no formulário para obter o tempo de resposta correspondente.
import java.awt.*; import java.awt.event.*; import javax.swing.*; //Ao declarar uma classe, adicione "implementa ActionListener" para implementar a interface de escuta. então Separe com vírgulas // Por exemplo, "implementa ActionListener,KeyListener" class ButtonListener estende JFrame implements ActionListener{ JButton ok, cancel,exit //Cria um componente que aceita respostas, que são três botões public; ButtonListener(String título){ super(título); this.setLayout(new FlowLayout()); ; //As três instruções a seguir registram ouvintes para botões ok.addActionListener(this); cancel.addActionListener(this); getContentPane().add(ok); getContentPane().add(cancel); getContentPane().add(exit); //Conclui o processamento do evento quando o evento é acionado public void actionPerformed(ActionEvent e){ if(e. getSource ()==ok) System.out.println("OK"); if(e.getSource()==cancelar) 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(verdadeiro);
2. A classe de monitoramento realiza o efeito: clique em três botões no formulário para perceber o tempo correspondente.
import java.awt.*; import java.awt.event.*; import javax.swing.*; public ButtonListener1(String title) { super(título); this.setLayout(new FlowLayout()); = new JButton("Sair"); ok.addActionListener(new MyListener()); cancel.addActionListener(new MyListener());; getContentPane().add(cancel().add(exit } public static void main(String args[]) { ButtonListener pd=new ButtonListener("ActionEvent Demo"); pd.setSize(250,100); e.getActionCommand()=="OK") System.out.println("OK"); if(e.getActionCommand()=="Retornar") System.out.println("Retornar"); if(e.getActionCommand()=="Sair") System.exit(0);;
3. Use a classe AbstractAction para implementar o monitoramento
Efeito: Clique no menu para responder
importar java.awt.BorderLayout; importar javax.swing.JFrame; importar javax.swing.JMenu; ; importar javax.swing.JMenuItem; importar javax.swing.JOptionPane; //Esta classe herda AbstractAction e deve implementar o método actionPerformed(). class AbstractEvent estende AbstractAction{ //private static final long serialVersionUID = 1L; AbstractEvent(){ } public void actionPerformed(ActionEvent e){ //Aparece caixa de diálogo de confirmação if (e.getActionCommand()=="open"){ JOptionPane .showMessageDialog(null, "abrir");else if (e.getActionCommand()=="fechar"){ JOptionPane.showMessageDialog(null, "Fechar"); }else if (e.getActionCommand()=="run"){ JOptionPane.showMessageDialog(null, "Run"); parar"){ JOptionPane.showMessageDialog(null, "parar"); } } } public class TestAbstractEvent { private static JMenuBar menubar; private static JFrame frame; //O manipulador específico para especificar MenuEvent é concluído pela classe AbstractEvent. Ação final MenuEvent=new AbstractEvent(); public TestAbstractEvent(){ frame=new JFrame("menu"); frame.getContentPane().setLayout(new BorderLayout()); ("file"); //Instancia um item de menu e adiciona um ouvinte para openAction, JMenuItem menuItemopen=new JMenuItem("abrir"); menuItemopen.addActionListener(MenuEvent); JMenuItem menuItemclose=new JMenuItem("fechar"); "); JMenuItem menuItemrun = novo JMenuItem ("executar"); menuItemrun.addActionListener (MenuItem menuItemstop = novo JMenuItem ("parar"); .add(menuArquivo); menubar.add(menuTool); menubar.setVisible(true); frame.add(menubar,BorderLayout.NORTH); frame.setSize(400,200); { novoTestAbstractEvent();
4. Classe AbstractAction + método de reflexão <br/>Efeito: Clique em três botões na barra de ferramentas e, através do nome do botão, a reflexão obterá uma resposta de implementação de classe com o mesmo nome do botão.
importar java.awt.BorderLayout; importar java.awt.event.ActionEvent; importar javax.swing.*; classe ViewAction estende AbstractAction{ private String ActionName=""; ViewAction(){ } public ViewAction(String ActionName){ this.ActionName=ActionName; //this.frame=frame } @Override public void; actionPerformed(ActionEvent e) { Action=getAction(this.ActionName); } private Action getAction(String ActionName){ try{ if (this.action==null){ Action action=(Action)Class .forName(ActionName).newInstance(); this.action=action } return this.action; estende JFrame { public JToolBar bar=new JToolBar(); String buttonName[]={"b1","b2","b3"}; public TestAE(){ super("Evento"); i<buttonName.length;i++){ ViewAction action=new ViewAction(buttonName[i]); button.addActionListener(ação); bar.add(botão); this.getContentPane().add(bar,BorderLayout.NORTH); verdadeiro); } public static void main(String [] args){ new TestAE(); execute(); } classe b1 implementa Action{ public void execute(){ JOptionPane.showMessageDialog(null, "b1 foi clicado"); foi clicado"); } } classe b3 implementa Action{ public void execute(){ JOptionPane.showMessageDialog(null, "Clicked b3"); } }
Os exemplos acima são bem explicados e não devem ser difíceis de entender. Espero que os exemplos descritos neste artigo sejam úteis para todos.