Programação em Java JButton e Tratamento de Eventos Prof. Luiz Antonio Rodrigues Prof. Luiz Antonio Unioeste - Cascavel Jpanel e Diagramadores
javax.swing.JButton O botão é um componente em que o usuário clica para disparar uma ação específica. Um programa Java pode utilizar vários tipos de botões, incluindo botões de comando, caixas de marcação, botões de alternância e botões de opção.
Métodos de JButton Construtores JButton() JButton(Icon icone) JButton(String texto) JButton(String texto, Icon icone) Outros setText(String texto) setIcon(Icon icone) setMnemonic(char mnemonic) setEnable(boolean estado) setToolTipText(String tip) addActionListener(ActionListener l)...
Exemplo JButton public class ExemploBotao extends JFrame { private JButton botao1, botao2; private Icon cafe = new ImageIcon( "java.jpg"); public ExemploBotao() { super( "Testando Botões" ); // Cria o container e atribui o layout Container container = getContentPane(); container.setLayout( new FlowLayout() ); // Cria os botões botao1 = new JButton("Botão Java", cafe ); botao1.setToolTipText("Pressione o botão"); container.add(botao1); botao2 = new JButton("Sair"); botao2.setToolTipText("Finaliza o programa"); container.add( botao2 ); setSize( 360, 150 ); setVisible( true ); } public static void main(String args[]) { ExemploBotao application = new ExemploBotao(); application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }
Adicionando um Evento // Classe interna para tratamento de evento de botão private class ListenerbotaoImagem implements ActionListener { // Método de manipulação do evento public void actionPerformed( ActionEvent event ) { JOptionPane.showMessageDialog( null, "Você pressionou um botao com imagem"); } } // fim da classe interna //classe ExemploBotao.java... botao1.addActionListener(new ListenerBotaoImagem());...
Como funciona o Tratamento de eventos
Listeners e Tratamento de Eventos Como o tratador de eventos foi registrado? o registro se deu no comando: botao1.addActionListener( new ListenerBotaoImagem()); Eles adiciona o handler de Button (ListenerBotaoImagem) como sendo um listener para o objeto botao1. Como o componente GUI sabe que deve chamar actionPerformed() em vez de outro método de tratamento de eventos? Cada JComponent suporta vários tipos de eventos (de mouse, de teclas e outros). Quando ocorre um evento, ele é despachado para os ouvintes de eventos do tipo apropriado.
Tratamento de Eventos O mecanismo de tratamento de eventos possui três partes: A origem do evento. O objeto do evento. O “ouvinte” (listener) do evento.
Tratamento de Eventos A origem do evento é o componente GUI com o qual o usuário interage; O objeto evento encapsula as informações sobre o evento que ocorreu. As informações incluem uma referência para a origem do evento e quaisquer informações específicas que possam ser requeridas pelo listener; O listener recebe notificações de que um evento ocorreu permitindo que este realize determinada ação;
Tratamento de Eventos O programador precisa executar duas tarefas para processar um evento da GUI com o usuário em um programa: registrar um listener para determinado componente GUI; Implementar um método de tratamento de evento, também chamados de tratadores de eventos.
Listeners e Tratamento de Eventos Listeners são definidos por interfaces e podem estar aptos a tratar mais de um tipo de evento. Quando um listener tem um de seus métodos chamados, ele recebe um parâmetro (objeto) que descreve o evento ocorrido. Cada tipo de evento tem uma interface listener de eventos correspondente. Por exemplo, ActionEvents são tratados por ActionListeners, MouseEvents por MouseListeners (e MouseMotionListeners) e KeyEvents por KeyListeners.
Implementando um ActionListener Definindo a classe que implementa a interface do Listener Registrando o Listener: class MeuListener implements ActionListener { public void actionPerformed(ActionEvent e) { System.out.println("Botão pressionado"); }... JButton botao = new JButton("Ok"); botao.addActionListener(new MeuListener());...
Implementando um WindowListener import java.awt.event.WindowEvent; import java.awt.event.WindowListener; class MeuListener implements WindowListener { public void windowOpened(WindowEvent e) { } public void windowClosing(WindowEvent e) { System.out.println("Janela sendo fechada"); } public void windowClosed(WindowEvent e) { } public void windowIconified(WindowEvent e) { } public void windowDeiconified(WindowEvent e){ } public void windowActivated(WindowEvent e){ } public void windowDeactivated(WindowEvent e) { } }
Adaptadores No caso anterior, seis implementações seriam vazias pois só desejávamos responder a um único evento. Como essa é uma situação comum, o pacote event define adaptadores para todas as interfaces de listeners que têm mais de um método. Um adaptador é uma classe que implementa o listener e dá implementações vazias para todos os métodos.
Voltando ao Exemplo... class MeuListener extends WindowAdapter { public void windowClosing(WindowEvent e) { System.out.println("Janela sendo fechada"); }