Tentei implantar o dispose.() mas não funcionou… usei ele onde eu stou tratando a seleção de idiomas no meu… Ta ae o código até o momento (é um modelo do livro do deitel ao qual estou editando de acordo com o que o professor pediu)
[code]// Demonstrando menus com seleção de idiomas.
import java.awt.Color;
import java.awt.Font;
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.ItemListener;
import java.awt.event.ItemEvent;
import javax.swing.JFrame;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.ButtonGroup;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JMenuBar;
import java.util.Locale;
import java.util.ResourceBundle;
public class MenuFrame extends JFrame
{
private final Color colorValues[] =
{ Color.BLACK, Color.BLUE, Color.RED, Color.GREEN };
private JRadioButtonMenuItem colorItems[]; // itens do menu Color
private JRadioButtonMenuItem idiomasItems[];
private JRadioButtonMenuItem fonts[]; // itens do menu Font
private JCheckBoxMenuItem styleItems[]; // itens do menu Font Style
private JLabel displayJLabel; // exibe texto de exemplo
private ButtonGroup fontButtonGroup; // gerencia itens do menu Font
private ButtonGroup colorButtonGroup; // gerencia itens do menu Color
private ButtonGroup idiomasButtonGroup;
private int style; // utilizado para criar estilos de fontes
private ResourceBundle id = null;
// construtor sem argumento para configurar a GUI
public MenuFrame()
{
super( "Usando JMenus" );
id = ResourceBundle.getBundle("ex2", new Locale("pt", "BR"));
JMenu fileMenu = new JMenu( id.getString("menu.arquivo") ); // cria o menu File
// cria item de menu About...
JMenuItem aboutItem = new JMenuItem( id.getString("arquivo.sobre") );
fileMenu.add( aboutItem ); // adiciona o item about ao menu File
aboutItem.addActionListener(
new ActionListener() // classe interna anônima
{
// exibe um diálogo de mensagem quando o usuário seleciona About...
public void actionPerformed( ActionEvent event )
{
JOptionPane.showMessageDialog( MenuFrame.this,
id.getString("sobre.texto"),
id.getString("sobre.titulo"), JOptionPane.PLAIN_MESSAGE );
} // fim do método actionPerformed
} // fim da classe interna anônima
); // fim da chamada para addActionListener
JMenuItem exitItem = new JMenuItem( id.getString("arquivo.saida") ); // cria o item exit
fileMenu.add( exitItem ); // adiciona o item exit ao menu File
exitItem.addActionListener(
new ActionListener() // classe interna anônima
{
// termina o aplicativo quando o usuário clica exitItem
public void actionPerformed( ActionEvent event )
{
System.exit( 0 ); // encerra o aplicativo
} // fim do método actionPerformed
} // fim da classe interna anônima
); // fim da chamada para addActionListener
JMenuBar bar = new JMenuBar(); // cria a barra de menus
setJMenuBar( bar ); // adiciona uma barra de menus ao aplicativo
bar.add( fileMenu ); // adiciona o menu File à barra de menus
JMenu formatMenu = new JMenu( id.getString("menu.formatar") ); // cria o menu Format
// array listando cores de string
String colors[] = { id.getString("cor.preto"), id.getString("cor.azul"), id.getString("cor.vermelho"), id.getString("cor.verde") };
JMenu colorMenu = new JMenu( id.getString("formatar.cor") ); // cria o menu Color
// cria itens do menu Color com botões de opção
colorItems = new JRadioButtonMenuItem[ colors.length ];
colorButtonGroup = new ButtonGroup(); // gerencia cores
ItemHandler itemHandler = new ItemHandler(); // handler para cores
// cria itens do menu Color com botões de opção
for ( int count = 0; count < colors.length; count++ )
{
colorItems[ count ] =
new JRadioButtonMenuItem( colors[ count ] ); // cria o item
colorMenu.add( colorItems[ count ] ); // adiciona o item ao menu Color
colorButtonGroup.add( colorItems[ count ] ); // adiciona ao grupo
colorItems[ count ].addActionListener( itemHandler );
} // fim do for
colorItems[ 0 ].setSelected( true ); // seleciona o primeiro item Color
formatMenu.add( colorMenu ); // adiciona o menu Color ao menu Format
formatMenu.addSeparator(); // adiciona um separador no menu
// array listando nomes de fonte
String fontNames[] = { id.getString("fonte.serif"), id.getString("fonte.monospaced"), id.getString("fonte.sansserif") };
JMenu fontMenu = new JMenu( id.getString("menu.fonte") ); // cria a fonte do menu
// cria itens do menu radiobutton para nomes de fonte
fonts = new JRadioButtonMenuItem[ fontNames.length ];
fontButtonGroup = new ButtonGroup(); // gerencia os nomes das fontes
// criar itens do menu Font com botões de opção
for ( int count = 0; count < fonts.length; count++ )
{
fonts[ count ] = new JRadioButtonMenuItem( fontNames[ count ] );
fontMenu.add( fonts[ count ] ); // adiciona fonte ao menu Font
fontButtonGroup.add( fonts[ count ] ); // adiciona ao grupo de botões
fonts[ count ].addActionListener( itemHandler ); // adiciona handler
} // fim do for
fonts[ 0 ].setSelected( true ); // seleciona o primeiro item do menu Font
fontMenu.addSeparator(); // adiciona uma barra separadora ao menu Font
String styleNames[] = { id.getString("fonte.negrito"), id.getString("fonte.italico") }; // nomes dos estilos
styleItems = new JCheckBoxMenuItem[ styleNames.length ];
StyleHandler styleHandler = new StyleHandler(); // handler de estilo
// criar itens do menu Style com caixas de seleção
for ( int count = 0; count < styleNames.length; count++ )
{
styleItems[ count ] =
new JCheckBoxMenuItem( styleNames[ count ] ); // para estilo
fontMenu.add( styleItems[ count ] ); // adiciona ao menu Font
styleItems[ count ].addItemListener( styleHandler ); // handler
} // fim do for
formatMenu.add( fontMenu ); // adiciona o menu Font ao menu Format
bar.add( formatMenu ); // adiciona o menu Format à barra de menus
// configura o rótulo para exibir texto
displayJLabel = new JLabel( id.getString("texto"), SwingConstants.CENTER );
displayJLabel.setForeground( colorValues[ 0 ] );
displayJLabel.setFont( new Font( "Serif", Font.PLAIN, 72 ) );
getContentPane().setBackground( Color.CYAN ); // configura o fundo
add( displayJLabel, BorderLayout.CENTER ); // adiciona displayJLabel
JMenu idiomasMenu = new JMenu( id.getString("menu.idiomas") ); // cria o menu Format
// array listando idiomas de string
String idiomas[] = { id.getString("idiomas.portugues"), id.getString("idiomas.ingles"), id.getString("idiomas.frances"), id.getString("idiomas.italiano") };
// cria itens do menu Color com botões de opção
idiomasItems = new JRadioButtonMenuItem[ idiomas.length ];
idiomasButtonGroup = new ButtonGroup(); // gerencia idiomas
//ItemHandler itemHandler = new ItemHandler(); // handler para cores
// cria itens do menu Color com botões de opção
for ( int count = 0; count < idiomas.length; count++ )
{
idiomasItems[ count ] =
new JRadioButtonMenuItem( idiomas[ count ] ); // cria o item
idiomasMenu.add( idiomasItems[ count ] ); // adiciona o item ao menu Color
idiomasButtonGroup.add( idiomasItems[ count ] ); // adiciona ao grupo
colorItems[ count ].addActionListener( itemHandler );
} // fim do for
idiomasItems[ 0 ].setSelected( true ); // seleciona o primeiro item Color
bar.add( idiomasMenu ); // adiciona o menu Color ao menu Format
} // fim do construtor de MenuFrame
// classe interna para tratar eventos de ação dos itens de menu
private class ItemHandler implements ActionListener
{
// processa seleções de cor e fonte
public void actionPerformed( ActionEvent event )
{
// processa a seleção de cor
for ( int count = 0; count < colorItems.length; count++ )
{
if ( colorItems[ count ].isSelected() )
{
displayJLabel.setForeground( colorValues[ count ] );
break;
} // fim do if
} // fim do for
// processa a seleção de idioma
if (idiomasItems[0].isSelected())
{
id = ResourceBundle.getBundle("ex2", new Locale("pt", "BR"));
}
if (idiomasItems[1].isSelected())
{
id = ResourceBundle.getBundle("ex2", Locale.US);
}
if (idiomasItems[2].isSelected())
{
id = ResourceBundle.getBundle("ex2", Locale.FRANCE);
}
if (idiomasItems[3].isSelected())
{
id = ResourceBundle.getBundle("ex2", Locale.ITALIAN);
}
//fim do processo de seleção de idiomas
// processa a seleção de fonte
for ( int count = 0; count < fonts.length; count++ )
{
if ( event.getSource() == fonts[ count ] )
{
displayJLabel.setFont(
new Font( fonts[ count ].getText(), style, 72 ) );
} // fim do if
} // fim do for
repaint(); // redesenha o aplicativo
} // fim do método actionPerformed
} // fim da classe ItemHandler
// classe interna para tratar eventos dos itens de menu com caixa de seleção
private class StyleHandler implements ItemListener
{
// processa seleções de estilo da fonte
public void itemStateChanged( ItemEvent e )
{
style = 0; // inicializa o estilo
// verifica se negrito foi selecionado
if ( styleItems[ 0 ].isSelected() )
style += Font.BOLD; // adiciona negrito ao estilo
// verifica se itálico foi selecionado
if ( styleItems[ 1 ].isSelected() )
style += Font.ITALIC; // adiciona itálico ao estilo
displayJLabel.setFont(
new Font( displayJLabel.getFont().getName(), style, 72 ) );
repaint(); // redesenha o aplicativo
} // fim do método itemStateChanged
} // fim da classe StyleHandler
} // fim da classe MenuFrame
//------------------------------------------------------------------------------------------[/code]
Aqui a simples classe para teste…
// Testando MenuFrame.
import javax.swing.JFrame;
public class MenuTest
{
public static void main( String args[] )
{
MenuFrame menuFrame = new MenuFrame(); // criar MenuFrame
menuFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
menuFrame.setSize( 800, 200 ); // configura o tamanho do frame
menuFrame.setVisible( true ); // exibe o frame
} // fim de main
} // fim da classe MenuTest
//------------------------------------------------------------------------------------------
Todas a linguas funcionam quando eu seto logo no começo do construtor qual o menu deve abrir… mas ainda não consigo ao selecionar outra lingua no menu ele trocar automaticamente para o idioma novo…
Continuo solicitando ajuda…
Vlw!