JMenu e Jpopup Menu
/*
* Main.java
*
* Created on 6 de Março de 2007, 20:14
*/
package menus;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
*
* @author adrw
*/
public class Main extends JFrame {
private Color cores[] = { Color.black, Color.blue, Color.red,
Color.green };
private JRadioButtonMenuItem colorItems[], fonts[];
private JCheckBoxMenuItem styleItems[];
private JLabel displayLabel;
private ButtonGroup fontGroup, colorGroup;
private int style;
//popup
private JRadioButtonMenuItem pop_items[];
private JPopupMenu popupMenu;
public Main()
{
super("Exemplo de menu");
JMenu fileMenu = new JMenu("Arquivo");
fileMenu.setMnemonic('F');
JMenuItem aboutItem = new JMenuItem("Sobre...");
aboutItem.setMnemonic('A');
aboutItem.addActionListener (
new ActionListener()
{
public void actionPerformed(
ActionEvent event )
{
JOptionPane.showMessageDialog(
Main.this, "Exemplo", "About", JOptionPane.PLAIN_MESSAGE );
}
}
);
fileMenu.add( aboutItem );
JMenuItem exitItem = new JMenuItem("Sair");
exitItem.setMnemonic('x');
exitItem.addActionListener (
new ActionListener()
{
public void actionPerformed(
ActionEvent event )
{
System.exit(0);
}
}
);
fileMenu.add( exitItem );
JMenuBar bar = new JMenuBar();
this.setJMenuBar( bar );
bar.add( fileMenu );
JMenu formatMenu = new JMenu("Formatar");
formatMenu.setMnemonic('r');
String colors[] = { "Preto", "Azul",
"Red", "Green" };
JMenu colorMenu = new JMenu("Cor");
colorMenu.setMnemonic('C');
colorItems = new JRadioButtonMenuItem[ cores.length
];
colorGroup = new ButtonGroup();
ItemHandler itemHandler = new ItemHandler();
for ( int count = 0; count < cores.length;
count++ )
{
colorItems[ count ] = new
JRadioButtonMenuItem( colors[count] );
colorMenu.add( colorItems[count]
);
colorGroup.add( colorItems[
count ] );
colorItems[ count ].addActionListener(
itemHandler );
}
colorItems[0].setSelected( true );
formatMenu.add( colorMenu );
formatMenu.addSeparator();
String fontNames[] = {"Serif", "Monospaced",
"SansSerif" };
JMenu fontMenu = new JMenu("Fonte");
fontMenu.setMnemonic('n');
fonts = new JRadioButtonMenuItem[ fontNames.length
];
fontGroup = new ButtonGroup();
for( int count=0; count < fonts.length;
count++ )
{
fonts[ count ] = new JRadioButtonMenuItem(
fontNames[count] ) ;
fontMenu.add( fonts[count]
);
fontGroup.add( fonts[count]
);
fonts[ count ].addActionListener(
itemHandler );
}
fonts[0].setSelected( true );
fontMenu.addSeparator();
String styleNames[] = { "Negrito",
"Italico" };
styleItems = new JCheckBoxMenuItem[ styleNames.length
];
StyleHandler styleHandler = new StyleHandler();
for ( int count=0; count<styleNames.length;
count++ )
{
styleItems[ count ] = new
JCheckBoxMenuItem( styleNames[ count ] );
fontMenu.add( styleItems[
count ] );
styleItems[ count ].addItemListener(
styleHandler );
}
formatMenu.add( fontMenu );
bar.add( formatMenu );
displayLabel = new JLabel("Texto Exemplo",
SwingConstants.CENTER );
displayLabel.setForeground( cores[0] );
displayLabel.setFont( new Font("TimesRoman",
Font.PLAIN, 72) );
getContentPane().setBackground( Color.cyan
);
getContentPane().add( displayLabel, BorderLayout.CENTER
);
// popup
pop_handler pop_handler = new pop_handler();
ButtonGroup pop_colorGroup = new ButtonGroup();
popupMenu = new JPopupMenu();
pop_items = new JRadioButtonMenuItem[3];
for ( int c = 0; c<pop_items.length; c++
)
{
pop_items[ c ] = new JRadioButtonMenuItem(
colors[c] );
popupMenu.add( pop_items[c]);
pop_colorGroup.add( pop_items[c]
);
pop_items[c].addActionListener(
pop_handler );
}
addMouseListener (
new MouseAdapter()
{
public
void mousePressed( MouseEvent event )
{
checkMouse(
event );
}
public
void MouseReleased( MouseEvent event )
{
checkMouse(
event );
}
private
void checkMouse( MouseEvent event )
{
//if
( event.isPopupTrigger() )
//{
//
está aceitando qualquer clique
popupMenu.show(
event.getComponent(), event.getX(), event.getY());
//}
}
}
);
setSize( 500, 200 );
setVisible( true );
}
public static void main(String[] args)
{
Main app = new Main();
app.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE
);
}
public class ItemHandler implements ActionListener
{
public void actionPerformed( ActionEvent event
)
{
for ( int count=0; count<colorItems.length;
count++ )
{
if ( colorItems[
count ].isSelected() )
{
displayLabel.setForeground(
cores[ count ] );
break;
}
}
for( int count=0; count<fonts.length;
count++)
{
if ( event.getSource()
== fonts[ count ] )
{
displayLabel.setFont(
new Font( fonts[count].getText(), style, 72) );
break;
}
}
repaint();
}
}
private class StyleHandler implements ItemListener {
public void itemStateChanged( ItemEvent e
)
{
style = 0;
if ( styleItems[0].isSelected()
)
{
style
+= Font.BOLD;
}
if ( styleItems[1].isSelected()
)
{
style
+= Font.ITALIC;
}
displayLabel.setFont( new
Font( displayLabel.getFont().getName(), style, 72 ) );
}
}
private class pop_handler implements ActionListener
{
public void actionPerformed( ActionEvent event
)
{
for ( int i=0; i<pop_items.length;
i++)
{
//JOptionPane.showMessageDialog(
null, "a " + event.getSource(), "", JOptionPane.CANCEL_OPTION
);
if ( event.getSource()
== pop_items[i] )
{
getContentPane().setBackground(
cores[i] );
//displayLabel.setForeground(
cores[ i ] );
repaint();
return;
}
}
}
}
}
|