87 lines
2.7 KiB
Java
87 lines
2.7 KiB
Java
|
Using JPopupMenu
|
||
|
|
||
|
import javax.swing.*;
|
||
|
import java.awt.event.*;
|
||
|
import java.awt.*;
|
||
|
|
||
|
public class PopupTest extends JFrame
|
||
|
{
|
||
|
private JRadioButtonMenuItem items[];
|
||
|
private Color colorValues[] = { Color.blue, Color.yellow, Color.red };
|
||
|
|
||
|
public PopupTest()
|
||
|
{
|
||
|
super( "Using JPopupMenus" );
|
||
|
|
||
|
final JPopupMenu popupMenu = new JPopupMenu();
|
||
|
ItemHandler handler = new ItemHandler();
|
||
|
String colors[] = { "Blue", "Yellow", "Red" };
|
||
|
ButtonGroup colorGroup = new ButtonGroup();
|
||
|
items = new JRadioButtonMenuItem[ 3 ];
|
||
|
|
||
|
// construct each menu item and add to popup menu; also
|
||
|
// enable event handling for each menu item
|
||
|
for ( int i = 0; i < items.length; i++ )
|
||
|
{
|
||
|
items[ i ] = new JRadioButtonMenuItem( colors[ i ] );
|
||
|
popupMenu.add( items[ i ] );
|
||
|
colorGroup.add( items[ i ] );
|
||
|
items[ i ].addActionListener( handler );
|
||
|
}
|
||
|
|
||
|
getContentPane().setBackground( Color.white );
|
||
|
|
||
|
// define a MouseListener for the window that displays
|
||
|
// a JPopupMenu when the popup trigger event occurs
|
||
|
addMouseListener( new MouseAdapter()
|
||
|
{
|
||
|
public void mousePressed( MouseEvent e )
|
||
|
{
|
||
|
checkForTriggerEvent( e );
|
||
|
}
|
||
|
|
||
|
public void mouseReleased( MouseEvent e )
|
||
|
{
|
||
|
checkForTriggerEvent( e );
|
||
|
}
|
||
|
|
||
|
private void checkForTriggerEvent( MouseEvent e )
|
||
|
{
|
||
|
if ( e.isPopupTrigger() )
|
||
|
popupMenu.show( e.getComponent(), e.getX(), e.getY() );
|
||
|
}
|
||
|
} );
|
||
|
|
||
|
setSize( 300, 200 );
|
||
|
show();
|
||
|
}
|
||
|
|
||
|
public static void main( String args[] )
|
||
|
{
|
||
|
PopupTest app = new PopupTest();
|
||
|
|
||
|
app.addWindowListener( new WindowAdapter()
|
||
|
{
|
||
|
public void windowClosing( WindowEvent e )
|
||
|
{
|
||
|
System.exit( 0 );
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
private class ItemHandler implements ActionListener
|
||
|
{
|
||
|
public void actionPerformed( ActionEvent e )
|
||
|
{
|
||
|
// determine which menu item was selected
|
||
|
for ( int i = 0; i < items.length; i++ )
|
||
|
if ( e.getSource() == items[ i ] )
|
||
|
{
|
||
|
getContentPane().setBackground( colorValues[ i ] );
|
||
|
repaint();
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|