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:
O meu JTextField vai se chamar jTF_Texto e o JButton vai ser jB_Busca, fique a vontade para dar os nomes mais convenientes.
Para abrir o menu popup usa-se o JPopupMenu, que nada mais é do que um JMenu que aparece em tempo de execução e por cima dos outros componentes. Ou seja, os itens que vão estar dentro do menu popup são os mesmos do menu estático: JMenuItem, JCheckBoxMenuItem e etc.
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:
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:
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…
Dúvidas é só postar, twittar…
Para quem quiser o código fonte desse exemplo, é só pegar o Projeto do NetBeans.
0 comentários :
Postar um comentário