Abrindo um menu popup ao clicar em um botão
1:33h da madrugada de um domingo e eu to começando a escreve esse post….
Fim de carreira neh… aiuhaiuhaiuahiahu
Mas vamos ao que interessa: às vezes pode ser bem interessante abrir um menu popup ao clicar em um botão da sua aplicação, como por exemplo em uma tela de cadastro de contas a pagar. A conta a pagar pode estar vinculada a um fornecedor, a um equipamento, a um veículo ou seja lá o que for que você o cliente queira.
Uma boa prática que eu gosto de usar é sempre deixar o usuário poder fazer uma busquinha rápida pelo fornecedor (equipamento, veículo, …) ao invés de ter que digitar o código dele lá.
Sendo assim, ao invés de fazer um botão para a busca de fornecedores, outro botão pra busca disso e outro pra busca daquilo, eu faço apenas um botão que quando clicado abre um menu com todas as opções e frescuras que eu quiser.
Muito mais simples neh… então mãos a obra: crie um novo projeto na sua IDE, adicione um JFrame e coloque um JTextField e um JButton nele (um iconezinho sempre eh legal neh… iauhiauaihu), fica +/- assim:
Quando o usuário clicar no botão agente cria o JPopupMenu e os JMenuItems dinamicamente, portanto podemos escrever o código tanto no evento de ActionPerformed quanto em algum de mouse. Eu vou escrever no MouseClicked:
private void jButton1MouseClicked(java.awt.event.MouseEvent evt) { //cria o primeiro item do menu e atribui uma ação pra ele JMenuItem item1 = new JMenuItem("Opção 1"); item1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jTF_Texto.setText("Clicou na Opção 1"); } }); //cria o segundo item do menu e atribui uma ação pra ele JMenuItem item2 = new JMenuItem("Opção 2"); item2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jTF_Texto.setText("Clicou na Opção 2"); } }); //cria o terceiro item do menu e atribui uma ação pra ele JMenuItem item3 = new JMenuItem("Opção 3"); item3.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jTF_Texto.setText("Clicou na Opção 3"); } }); //cria o menu popup e adiciona os 3 itens JPopupMenu popup = new JPopupMenu(); popup.add(item1); popup.add(item2); popup.add(item3); //mostra na tela popup.show(jB_Busca, 10, 10); }
O código é totalmente auto-explicativo nao eh… ainda mais com alguns comentarios… hehe
Talvez a única parte diferente seja mostrar o menu: o método show(…) da classe JPopupMenu é o responsável por jogar o menu por cima dos outros componentes, e pra isso, ele precisa saber em cima de quem ele vai aparecer… então é só passar para ele uma referencia do nosso botão. Os outros dois parâmetros são as coordenadas X,Y que o menu vai ser desenhado, sendo que a coordenada 0,0 é a mesma coordenada 0,0 do botão. Só pra dar um efeito mais bonitinho, eu desloquei 10 em X e 10 em Y:
Bem simples não?…
Dúvidas é só postar, twittar…
Para quem quiser o código fonte desse exemplo, é só pegar o Projeto do NetBeans.
[]s, e até a próxima.


One Response so far
Robson
novembro 24th, 2010
0:25
cara, muito bom o artigo, vlw ai, ajudou muito XD
Leave a comment