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?
Eventos
5 Respostas
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
é 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
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!! 
ate mais…
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
e como eu chamo o painel? tipo eu tenho na tela o painel1 e quero q apareça o painel2 apertando num JMenuItem