Eventos

5 respostas
E

Alguem poderia me dizer, por favor, como funciona o modelo de eventos em java, clique em botao, movimento de mouse essas coisas e como criar um novo componente visual com eventos de mouse?

5 Respostas

duardor

Basicamente um evento deve ser “escutado” por um listener…
Tipo se vc quer pegar uma acao vc usa um ActionListener…
Vc faz isso a sua classe implementar ActionListener…
Têm tb um lance de adaptadores, se nao me engano vc usa quando nao quer implementar todos os metodos da interface…
Espero te ajudado
Abraços

J

é isso aí …

primeiro vc deve habilitar seu componente, um JButton por exemplo, a receber os eventos que vc deseja; vc faz isso através dos métodos add[color=“blue”]NomeDoEvento[/color]

exemplo:

jButton1.addMouseListener(new tratador());

com essa linha de comando vc está habilitando seu objeto jButton1 a receber eventos de mouse.

IMPORTANTE: veja que vc está passando como parâmetro no evento addMouseListener a expressao [color=“blue”]new tratador()[/color], que cria um objeto da classe tratador … tratador, neste caso, é uma classe q vc deve criar e q deve herdar a interface MouseListener … dentro dela (tratador) vc vai implementar todos os métodos da interface MouseListener, mesmo os que vc nao for usar …

NA PRÁTICA: quando clicarem no seu jButton1 um objeto tratador vai ser criado e dentro dele o método correspondente ao evento acionado será executado …

é mais ou menos isso … como nosso colega falou tb vc pode criar uma classe tratador (cujo nome nao precisa necessariamente ser este) através dos adaptadores de evento … a vantagem dos adaptadores é q vc nao precisa implementar todos os métodos da interface MouseListener …

mais informacoes vc acha no tutorial da sun: http://java.sun.com/tutorial

falow

richardpeder

Vc não tem idéia da maravilha que é o “ouvinte” em java…vc pode colocar ouvinte em quase tudo…desde um simples botão até um combo, ou seja, quando falamos de interface grafica em java, o desenvolvedor pode “deitar e rolar” em relação a facilitar a vida de quem irá utilizar o seu sistema ou programa, pois a facilidade com que vc pode tratar eventos de teclado, mouse etc é enorme.

Bom divertimento!! :wink:

ate mais…

daniel.lopes

Caras… eu sou hipersupermegamasterblasterproseniorplus iniciante tem programação. Mais… justamente por java…

Estou fazendo uma aplicaçãozinha simples em swing e esbarrei nesse tal ouvinte. tenho uma classe main que cria um frame. esse main instancia um panel inicial (classe separada) além de instanciar um menu(classe separada). tenho mais dois panels (classe separada) e gostaria que fossem abertos nesse mesmo frame ao clicar no menu, porém esbarrei nesse tal de ouvidor. Não estou entendendo qual a sua estrutura de funcionamento. vocês poderiam me ajudar? seguem as classes que uso. todos os imports foram feitos. essa aplicação funciona sem problemas, porém sem a implementação dos listeners…

main - instancia um frame, e para este frame é instanciado inicialmente um panel (classe separada) e um menu que é comum para todas as outras telas (todos em classes separadas).

public class TestaEvento {
    
    public static void main(String[] args) {
	//instanciando um componente do tipo JPanel
	JPanel painel = new Painel01();
	
	//instanciando um menu do tipo JMenuBar
	JMenuBar menu = new Menu();
	        
	//instanciando o frame a ser exibido e definindo sua barra de título 
	JFrame frame = new JFrame("Titulo da barra da Janela vem aqui");
        
        //adicionando o painel ao frame
	frame.getContentPane().add(painel);
	
	//adicionando o menu ao frame
	frame.setJMenuBar(menu);
        
        //ajustando a exbibição do frame
        frame.setSize(900, 700);
	//frame.pack();
        frame.setVisible(true);
        
        //definindo evento ao fechar a janela e encerrar a VM.
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

}

a seguir, a classe com o menu

public class Menu extends JMenuBar{
    
    //criando as variaveis para o menu
    private JMenuBar barraDeMenu;
    private JMenu menu, subMenu;
    private JMenuItem menuItem;

    public Menu() {
	//instanciando a barra de menu
	barraDeMenu = new JMenuBar();
	
	//criando o menu_01 e esperando para implementar
                //algum listener para chamar a classe painel 01
	menu = new JMenu("Menu_01");
	menuItem = new JMenuItem("chama_painel01");
	menu.add(menuItem);
	
	//criando o menu_01 e esperando para implementar
                //algum listener para chamar a classe painel 02
	menuItem = new JMenuItem("chama_painel02");
	menu.add(menuItem);
	
	//criando o menu_01 e esperando para implementar
                //algum listener para chamar a classe painel 03
	subMenu = new JMenu("Sub_01");
	menuItem = new JMenuItem("Painel03");
	subMenu.add(menuItem);
	menu.add(subMenu);
	
	//adicionando o menu_01 à barra
	barraDeMenu.add(menu);
	
	//adicionando a barra ao frame
	add(barraDeMenu);
    }
}

tem 3 classes de painel como esta, diferenciada apenas pelo texto e cor de paineis internos

public class Painel01 extends JPanel{
    
    //variaveis
    private JLabel label;
    private JPanel panel;
    private JPanel container;
    
    //string de texto para a label
    
    private String sLabel = "ESTE É O TEXTO QUE VAI NA LABEL DO PAINEL 01";
    
    public Painel01(){
	
	//instanciando as variaveis
	label = new JLabel(sLabel);
	panel = new JPanel();
	container = new JPanel(new BorderLayout());
	
	//ajustando o panel
	panel.add(label, BorderFactory.createEmptyBorder(0, 0, 20, 0));
	panel.setBackground(Color.red);
	
	//ajustando o container
	container.setBorder(BorderFactory.createEmptyBorder(35, 35, 35, 35));
	container.setBackground(Color.yellow);
	container.add(panel, BorderLayout.CENTER);
	
	//adicionando o container ao frame
	add(container);
    }
}

Estou fazendo leitura de vários tópicos do guj e dos exemplos da sun, porém, ainda não consegui entender o funcionamento básico do listener e o que ações eu poderia fazer com ele.

Agraço desde já as colaborações!

Daniel

edpittol

e como eu chamo o painel? tipo eu tenho na tela o painel1 e quero q apareça o painel2 apertando num JMenuItem

Criado 16 de fevereiro de 2003
Ultima resposta 26 de mar. de 2008
Respostas 5
Participantes 6