Visual – JPopUpMenu – Menu de Contexto – Java

Publicado: 28 de março de 2014 em Java

PopUpMenu

Um menu de contexto ou um menu pop-up é um menu em uma interface gráfica do usuário (GUI) que aparece em cima de interação do usuário, como uma operação de clique com o botão direito do mouse. Um menu de contexto oferece um conjunto limitado de opções que estão disponíveis no estado atual, ou contexto, do sistema operacional ou aplicativo. Normalmente, as opções disponíveis são as ações relacionadas com o objeto selecionado.

Os menus de contexto foram introduzidos no ambiente Smalltalk do computador Xerox Alto, onde eram chamados menus pop-up. O sistema operacional NEXTSTEP desenvolveu a ideia, incorporando a funcionalidade em que o botão do meio ou o da direita traziam o menu principal na posição do mouse, eliminando a necessidade de mover o ponteiro por toda a tela. Esse menu principal era vertical e mudava de acordo com o texto da operação do sistema.

Exemplo:

Neste exemplo criamos um objeto JPopUpMenu atrelado no contexto de um objeto JPanel e usamos eventos do mouse e do menu pop-up para lhe atribuir funcionalidades.

Java

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JSeparator;

public class PopUp implements MouseListener 

{
	// Declara Componentes
	JLabel titulo;
	JLabel rodape;
	JPanel painel;
	JPopupMenu pMenu;
	JMenuItem item;
	
	// Declara variaveis
	String acao = "Você clicou no: ";
	
	// Declara painel
	public Container criaPainel()
	{
		// Cria painel
		painel = new JPanel(new BorderLayout()); 
		painel.setOpaque(true);
		
		// Cria Labels
		titulo = new JLabel("Clique com o botão direito no formulario");
		rodape = new JLabel(acao);
		
		// Cria layout
		painel.add(titulo, BorderLayout.PAGE_START);
		painel.add(rodape, BorderLayout.PAGE_END);
		
		// Cria popupmenu
		pMenu = new JPopupMenu();
		
		// Cria itens do menu e eventos
		item = new JMenuItem("Item 1");
		item.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0)
			{
				
				rodape.setText(acao + "Item 1");
				
			}
		});
		
		pMenu.add(item);
		
		item = new JMenuItem("Item 2");
		item.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0)
			{
				
				rodape.setText(acao + "Item 2");
				
			}
		});
		
		pMenu.add(item);
		
		// Cria separador
		pMenu.add(new JSeparator());
		
		item = new JMenuItem("Item 3");
		item.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0)
			{
				
				rodape.setText(acao + "Item 3");
				
			}
		});
		
		pMenu.add(item);
		
		painel.addMouseListener(this);
		
		
		return painel;
	}
	
	// Declara GUI
	public static void criaGUI()
	{
		// Cria formulario
		JFrame formulario = new JFrame("PopUp Menu");
		formulario.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		// Cria classe popupmenu
		PopUp menu = new PopUp();
		
		// Adiciona painel ao formulario
		formulario.setContentPane(menu.criaPainel());
		
		// Adiciona propriedades ao formulario
		formulario.setSize(400, 300);
		formulario.setVisible(true);
		
	}


	// Cria Eventos para o mouse

	@Override
	public void mouseClicked(MouseEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mouseEntered(MouseEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mouseExited(MouseEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mousePressed(MouseEvent arg0)
	{
		// verifica se o evento foi disparado no painel 
		if (arg0.getSource() == painel )
		{
			pMenu.show(painel, arg0.getX(), arg0.getY());
		}
		
	}

	@Override
	public void mouseReleased(MouseEvent arg0) {
		// TODO Auto-generated method stub
		
	}
	
	// Cria GUI
	public static void main(String[] args)
	{
	
		javax.swing.SwingUtilities.invokeLater(new  Runnable() {
			
			@Override
			public void run()
			{
				criaGUI();			
				
			}
		});

	}

}
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s