/* importa as classes que serao usadas */
import java.awt.*;
import java.awt.Event.*;
import javax.swing.*;
/* classe PopupTest, que herda JFrame */
public class PopupTest extends JFrame
{
/* cria array do tipo JRadioButtonMenuItem */
private JRadioButtonMenuItem items[];
/* cada posicao de colorValues vale uma cor (0=azul, 1=amarelo, 2=vermelho) */
private Color colorValues[]={Color.blue,Color.yellow,Color.red};
/* cria um JPopupMenu de nome popupMenu */
private JPopupMenu popupMenu;
/* metodo construtor, nao recebe parametros */
public PopupTest()
{
/* faz um JFrame passando um parametro String (sera' o titulo) */
super("Using JPopupMenus");
/* cria e instancia um ItemHandler
ItemHandler handler = new ItemHandler();
String colors[] = {"Blue","yellow","Red"};
/* cria e instancia um objeto ButtonGroup */
ButtonGroup colorGroup = new ButtonGroup();
/* instancia popupMenu de JPopupMenu */
popupMenu = new JPopupMenu();
/* instancia items de JRadioButtonMenuItem */
items = new JRadioButtonMenuItem[3];
/* laco que percorre o array items */
for ( int x=0; x<items.length; x++ ){
/* faz com que cada posicao de items seja um JRadioButtonMenuItem
com um parametro de colors (Strings para um menu) */
items[x] = new JRadioButtonMenuItem(colors[x]);
/* adiciona cada posicao de items ao objeto popupMenu (JPopupMenu) */
popupMenu.add(items[x]);
/* adiciona cada item do array items ao colorGroup */
colorGroup.add(items[x]);
/* adiciona um actionListener a cada posicao de items */
items[x].addActionListener(handler);
}
/* deixa o fundo com a cor branca */
getContentPane().setBackground(Color.white);
addMouseListener( new MouseAdapter() {
public void mousePressed( MouseEvent event )
{
checkForTriggerEvent( event );
}
public void mouseReleased ( MouseEvent event )
{
checkForTriggerEvent( event );
}
private void checkForTriggerEvent ( MouseEvent event )
{
if ( event.isPopupTrigger() )
popupMenu.show( event.getComponent(),event.getX (), event.getY() );
}
}
);
/* define tamanho */
setSize( 300,200 );
/* define que e' visivel (mostra ao usuario) */
setVisible( true );
}
/* metodo principal */
public static void main( String args[] )
{
/* cria e instancia um objeto PopupTest de nome application */
PopupTest application = new PopupTest();
/* a operacao padrao ao fechar application e' encerrar o programa */
application.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE );
}
/* classe ItemHandler, que implementa ActionListener */
private class ItemHandler implements ActionListener {
/* metodo actionPermormed, que recebe um ActionEvent */
public void actionPerformed( ActionEvent event )
{
/* percorre items e, se o evento for a escolha de um deles, muda a cor de fundo para a escolhida */
for ( int i=0; i<items.length; i++ )
if ( event.getSource () == items[i] )
{
getContentPane().setBackground( colorValues[i] );
/* atualiza a tela */
repaint();
/* encerra o metodo */
return;
}
}
}
}