JPopupMenu

JPopupMenu é um componente Swing usado para mostrar um menu pop-up no aplicativo. O menu pop-up nada mais é do que uma pequena janela que aparece e mostra uma série de opções em qualquer evento, como clique no botão.

Exemplo

  • O menu Editar pode conter opções como recortar, copiar e colar.
  • O menu de uma organização pode conter opções como Início, entre em contato conosco, sobre nós, informações etc.

JPopupMenu é uma classe usada em um aplicativo Swing. Aqui está a declaração:

classe pública JPopupMenu estende JComponent implementa Accessible, MenuElement

Classe base JComponent para todos os componentes Swing, exceto contêineres de nível superior.

Construtores

JPopupMenu ()

Este construtor constrói um JPopupMenu sem um invocador.

JPopupMenu (rótulo de sequência)

Este construtor constrói um JPopupMenu com um título.

Vamos entender o JPopupMenu com a ajuda de um exemplo:

Programa

package application;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.SwingConstants;
import javax.swing.event.PopupMenuEvent;
import javax.swing.event.PopupMenuListener;
public class JPopupMenuDemo (
public static void main(String() args) (
JFrame app = new JFrame();
JButton organization = new JButton("Organization");
app.add(organization);
app.setSize(400, 400);
app.setLayout(new GridLayout(2, 1));
app.setVisible(true);
organization.setVisible(true);
JPopupMenu menu = new JPopupMenu("Menu");
JLabel status = new JLabel();
status.setHorizontalTextPosition(SwingConstants.CENTER);
status.setVerticalTextPosition(SwingConstants.CENTER);
app.add(status);
ActionListener listener = new ActionListener() (
@Override
public void actionPerformed(ActionEvent e) (
status.setText(e.getActionCommand());
status.setVisible(true);
)
);
JMenuItem enquire = new JMenuItem("Enquire");
enquire.addActionListener(listener);
JMenuItem aboutUs = new JMenuItem("About Us");
aboutUs.addActionListener(listener);
JMenuItem home = menu.add("Home");
home.addActionListener(listener);
JMenuItem contactUs = menu.add(new AbstractAction() (
private static final long serialVersionUID = 1L;
@Override
public void actionPerformed(ActionEvent e) (
status.setText(e.getActionCommand());
status.setVisible(true);
)
));
menu.add(enquire);
menu.add(aboutUs);
menu.add(contactUs);
home.setText("Home. Index - " + menu.getComponentIndex(home));
enquire.setText("Enquire. Index - " + menu.getComponentIndex(enquire));
aboutUs.setText("About Us. Index - " + menu.getComponentIndex(aboutUs));
contactUs.setText("Contact Us. Index - " + menu.getComponentIndex(contactUs));
menu.addPopupMenuListener(new PopupMenuListener() (
@Override
public void popupMenuWillBecomeVisible(PopupMenuEvent e) (
status.setText("Popup menu is visible now.");
status.setVisible(true);
)
@Override
public void popupMenuWillBecomeInvisible(PopupMenuEvent e) (
status.setText("Popup menu is invisible now.");
)
@Override
public void popupMenuCanceled(PopupMenuEvent e) (
status.setText("Popup menu is cancelled now.");
)
));
organization.addMouseListener(new MouseAdapter() (
public void mouseClicked(MouseEvent e) (
menu.show(app, e.getX(), e.getY());
)
));
)
)

Explicação

Esta é uma aplicação para qualquer organização que tenha páginas básicas como casa, informações, sobre nós e entre em contato conosco.

  • Primeiro, criamos um JFrame de tamanho 400 por 400 pixels. JFrame é uma janela de nível superior com título e borda.
  • Em seguida, adicionou um botão "Organização" para mostrar o menu principal do aplicativo.
  • Um rótulo é criado para mostrar o status do aplicativo (Qual item de menu é clicado)
  • Um menu pop-up é criado usando a classe JPopupMenu e adicionado quatro itens de menu - Página inicial, informações sobre nós e entre em contato.
  • O índice do item de menu é calculado e mostrado usando a função "getComponentIndex".
  • Adicionado um separador no final do menu usando a função "addSeparator".
  • Um ouvinte é adicionado para mostrar a janela do menu com o clique do botão.
  • Mais um ouvinte é adicionado para alterar o status quando um menu é exibido e também quando os itens são clicados.
  • Quando o usuário clica no botão "Organização", uma janela pop-up é aberta com itens de menu.
  • Quando um item de menu é clicado, "status" é alterado.

Resultado

  1. Esta é a aplicação:

  1. Quando o usuário clicou em "Organização", um menu pop-up é exibido:

  1. Quando o usuário clicou em "Início":

  1. Quando o usuário clicou em "Consultar":

  1. Quando o usuário clicou em "Sobre nós":

  1. Quando o usuário clicou em "Entre em contato":

Métodos do JPopupMenu

Alguns dos métodos JPopupMenu úteis:

  1. JMenuItem add (Ação a)

Este método adiciona um item de menu no final do menu e a ação para o item de menu é especificada.

  1. JMenuItem add (JMenuItem menuItem)

Esse método também adiciona um item de menu no final, exceto que a ação para esse item de menu deve ser especificada em JMenuItem.

  1. JMenuItemadd (String s)

Este método cria um JMenuItem, adiciona ao menu e retorna o JMenuItem para que possa ser configurado ainda mais.

  1. void addSeparator ()

Este método adiciona um espaço separador no final do menu.

  1. int getComponentIndex (Componente c)

Este método retorna o índice do componente especificado neste JPopupMenu.

  1. estático booleano getDefaultLightWeightPopupEnabled ()

Este método retorna o valor da propriedade defaultLightWeightPopupEnabled, que por padrão é verdadeira.

  1. static void setDefaultLightWeightPopupEnabled (aFlag booleano)

Este método define o valor da propriedade defaultLightWeightPopupEnabled.

  1. String getLabel ()

Este método retorna o rótulo deste menu.

  1. void setLabel (rótulo String)

Este método define o rótulo para este menu.

  1. Inserções getMargin ()

Este método retorna a margem, em pixels, entre a borda deste menu e seus contêineres.

  1. boolean isLightWeightPopupEnabled ()

Este método retorna a propriedade "lightWeightPopupEnabled".

  1. void setLightWeightPopupEnabled (aFlag booleano)

Este método define a propriedade "lightWeightPopupEnabled", que por padrão é verdadeira.

  1. booleano isVisible ()

Este método retorna a visibilidade atual deste menu.

  1. void setVisible (booleano b)

Este método define a visibilidade do menu.

  1. String protegida paramString ()

Este método retorna uma representação de string deste menu.

  1. remoção nula (int pos)

Este método remove o componente no índice especificado deste menu.

  1. void setLocation (int x, int y)

Este método define a localização do canto superior esquerdo deste menu usando as coordenadas x e y.

  1. void setPopupSize (largura int, altura int)

Este método define o tamanho desta janela de menu para a altura e largura especificadas.

  1. void setPopupSize (dimensão d)

Este método define o tamanho desta janela de menu para a dimensão especificada.

  1. PopupMenuUI getUI ()

Este método retorna a aparência deste menu.

  1. void setUI (interface do usuário PopupMenuUI)

Este método define a aparência deste menu.

  1. void updateUI ()

Este método redefine a aparência deste menu.

  1. inserção nula (Ação a, índice int)

Este método insere o item de menu no menu com a ação especificada no índice especificado.

  1. inserção nula (componente Componente, índice int)

Este método insere o item de menu no menu no índice especificado.

  1. void show (invocador de componentes, int x, int y)

Este método mostra o menu no invocador de componentes na posição x, y no espaço de coordenadas.

  1. void addPopupMenuListener (PopupMenuListener l)

Este método adiciona um ouvinte a este menu pop-up com a ajuda de que podemos verificar quando o menu pop-up está visível, invisível e cancelado.

Artigos recomendados

Este é um guia para o JPopupMenu. Aqui discutimos o exemplo e o construtor com o programa e a explicação do JPopupMenu. Você também pode consultar os seguintes artigos para saber mais -

  1. Anotações Java
  2. Raiz quadrada em Java
  3. CardLayout em Java
  4. Matriz de impressão em Java
  5. JLabel em Java
  6. Raiz quadrada em PHP