Rodrigo, UI é de UserInterface... como eu tenho costume de usar L&F´s dinâmicos nas minhas aplicações,toma um exemplo meu da antiga aí(é um Menu principal de aplicação):
/******Programa de Cadastro de DVD´s*****Menu Principal Da Aplicação*************************
********************************************************************************************
*@version 0.3beta 6/03/2004****************************************************************
********************************************************************************************
*@author Ironlynx **************************************************************************
********************************************************************************************
*Copyright(c) 2004 Ironlynx Solutions, Inc All Rights Reserved.****************************
*******************************************************************************************/
//package clipstudiodvds;
import java.awt.*;
import java.awt.event.*;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JMenuBar;
import javax.swing.KeyStroke;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import javax.swing.JFrame;
import javax.swing.UIManager.*;
import javax.swing.LookAndFeel;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.plaf.metal.DefaultMetalTheme;
import javax.swing.plaf.metal.MetalLookAndFeel;
import com.l2fprod.gui.plaf.skin.*;//importará o Skin L&F
import com.l2fprod.gui.plaf.skin.SkinLookAndFeel;
public class Principal implements ActionListener, ItemListener,
MouseListener {
private JFrame frame = null;
private JWindow splashScreen = null;
private JTextArea saida;
private JScrollPane scroll;
private JDesktopPane desktop;
private Cadastro cadastro;//variável do tipo cadastro que será usada para
//criar a JInternalFrame de cadastro de dvd´s
private Consulta consulta;//variável que será usada para referenciar a tela de consulta
//que será criada
//itens(variáveis de instância) da Barra de Menus
private JMenuBar menuBar;
private JMenu menu,menu2,menu3,menu4,menu5,menu6;
private JMenuItem[] menuItem=new JMenuItem[8];
private JMenuItem[] menuItem2=new JMenuItem[5];
private JMenuItem[] menuItem3=new JMenuItem[5];
private JMenuItem[] menuItem4=new JMenuItem[2];
private JMenuItem[] menuItem5=new JMenuItem[2];
public JRadioButtonMenuItem[] rbMenuItem=new JRadioButtonMenuItem[5];
// Aparências(aspectos de Tela) possíveis-são protected pq precisam ser passadas a
//JInternalFrame de Cadastro para atualizar a aparência!
protected static final String mac =
"com.birosoft.liquid.LiquidLookAndFeel";
protected static final String metal =
"javax.swing.plaf.metal.MetalLookAndFeel";
protected static final String skin =
"com.l2fprod.gui.plaf.skin.SkinLookAndFeel";
protected static final String windows =
"de.muntjak.tinylookandfeel.TinyLookAndFeel";
protected static final String kunststoff =
"com.incors.plaf.kunststoff.KunststoffLookAndFeel";
// Aspecto da tela corrente
protected static String lookAndFeelAtual = metal;
public Principal(){
exibeTela();
}//construtor
/*
*@method criaMenu()-método responsável pela criação da Barra de Menus dos menus e submenus
*/
public JMenuBar criaMenu(){
//Cria a barra de menu.
menuBar = new JMenuBar();
//Constrói o primeiro menu
menu = new JMenu("Arquivo");//cabeçalho do primeiro menu
menu.addActionListener(this);
// menu.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
menu.setMnemonic(KeyEvent.VK_A);
menu.getAccessibleContext().setAccessibleDescription(
"Dados De Arquivo");
menuBar.add(menu);//adiciona o primeiro menu a barra de menus
//um grupo de JMenuItems
menuItem[0] = new JMenuItem("Novo Arquivo",KeyEvent.VK_T);
//menuItem.setMnemonic(KeyEvent.VK_T); //used constructor instead
menuItem[0].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_1, ActionEvent.ALT_MASK));
menuItem[0].getAccessibleContext().setAccessibleDescription(
"Abre um item de arquivo");
menu.add(menuItem[0]);
//segunda linha do primeiro menu
menuItem[1] = new JMenuItem("Abrir Arquivo");
menuItem[1].setMnemonic(KeyEvent.VK_B);
menu.add(menuItem[1]);
//terceira linha do primeiro menu
menuItem[2] = new JMenuItem("Salvar Arquivo");
menuItem[2].setMnemonic(KeyEvent.VK_C);
menu.add(menuItem[2]);
menu.addSeparator();//cria uma linha de separação entre a 3ª e 4ª linha do menu
//quarta linha do primeiro menu
menuItem[3] = new JMenuItem("Novo Cadastro");
menuItem[3].setMnemonic(KeyEvent.VK_D);
menu.add(menuItem[3]);
//quinta linha do primeiro menu
menuItem[4] = new JMenuItem("Abrir Cadastro");
menuItem[4].setMnemonic(KeyEvent.VK_E);
menu.add(menuItem[4]);
//sexta linha do primeiro menu
menuItem[5] = new JMenuItem("Deletar Cadastro");
menuItem[5].setMnemonic(KeyEvent.VK_F);
menu.add(menuItem[5]);
//sétima linha do primeiro menu
menuItem[6] = new JMenuItem("Selecionar Cadastro");
menuItem[6].setMnemonic(KeyEvent.VK_G);
menu.add(menuItem[6]);
//oitava linha linha do primeiro menu "Arquivo"
menuItem[7] = new JMenuItem("Sair");
menuItem[7].setMnemonic(KeyEvent.VK_H);
menu.add(menuItem[7]);
//criar submenus
//novo menu chamado "Editar"
menu2=new JMenu("Editar");
menu2.setMnemonic(KeyEvent.VK_N);
menu2.getAccessibleContext().setAccessibleDescription("Menu de edição de itens");
menuBar.add(menu2);
//primeira linha do segundo menu "Editar"
menuItem2[0] = new JMenuItem("Cadastro");
menuItem2[0].setMnemonic(KeyEvent.VK_M);
menuItem2[0].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_2, ActionEvent.ALT_MASK));
menu2.add(menuItem2[0]);
//segunda linha do segundo menu "Editar"
menuItem2[1] = new JMenuItem("Filme");
menuItem2[1].setMnemonic(KeyEvent.VK_O);
menu2.add(menuItem2[1]);
//terceira linha do segundo menu "Editar"
menuItem2[2] = new JMenuItem("Diretor");
menuItem2[2].setMnemonic(KeyEvent.VK_P);
menu2.add(menuItem2[2]);
//quarta linha do segundo menu "Editar"
menuItem2[3] = new JMenuItem("Ator(es)");
menuItem2[3].setMnemonic(KeyEvent.VK_Q);
menu2.add(menuItem2[3]);
//quinta linha do segundo menu "Editar"
menuItem2[4] = new JMenuItem("Ano de Produção");
menuItem2[4].setMnemonic(KeyEvent.VK_K);
menu2.add(menuItem2[4]);
//novo menu chamado "Exibir"
menu3=new JMenu("Exibir");
menu3.setMnemonic(KeyEvent.VK_R);
menu3.getAccessibleContext().setAccessibleDescription("Menu de exibição de itens");
menuBar.add(menu3);
//primeira linha do terceiro menu chamado "Exibir"
menuItem3[0] = new JMenuItem("Cadastro");
menuItem3[0].setMnemonic(KeyEvent.VK_S);
menuItem3[0].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_3, ActionEvent.ALT_MASK));
menu3.add(menuItem3[0]);
//segunda linha do terceiro menu "Exibir"
menuItem3[1] = new JMenuItem("Filme");
menuItem3[1].setMnemonic(KeyEvent.VK_T);
menu3.add(menuItem3[1]);
//terceira linha do terceiro menu "Exibir"
menuItem3[2] = new JMenuItem("Diretor");
menuItem3[2].setMnemonic(KeyEvent.VK_U);
menu3.add(menuItem3[2]);
//quarta linha do terceiro menu "Exibir"
menuItem3[3] = new JMenuItem("Ator(es)");
menuItem3[3].setMnemonic(KeyEvent.VK_V);
menu3.add(menuItem3[3]);
//quinta linha do terceiro menu "Exibir"
menuItem3[4] = new JMenuItem("Ano de Produção");
menuItem3[4].setMnemonic(KeyEvent.VK_X);
menu3.add(menuItem3[4]);
//novo(e 4º) menu chamado "Favoritos"
menu4=new JMenu("Favoritos");
menu4.setMnemonic(KeyEvent.VK_Y);
menu4.getAccessibleContext().setAccessibleDescription("Menu dos filmes favoritos");
menuBar.add(menu4);
//primeira linha do quarto menu chamado "Favoritos"
menuItem4[0] = new JMenuItem("Adicionar a Favoritos");
menuItem4[0].setMnemonic(KeyEvent.VK_Y+KeyEvent.VK_1);
menuItem4[0].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_4, ActionEvent.ALT_MASK));
menu4.add(menuItem4[0]);
//segunda linha do quarto menu chamado "Favoritos"
menuItem4[1] = new JMenuItem("Organizar os Filmes Favoritos");
menuItem4[1].setMnemonic(KeyEvent.VK_Y+KeyEvent.VK_2);
menu4.add(menuItem4[1]);
//código dinâmico dos filmes favoritos
//quinto menu chamado "Imprimir"
menu5=new JMenu("Imprimir");
menu5.setMnemonic(KeyEvent.VK_W);
menu5.getAccessibleContext().setAccessibleDescription("Imprimir filmes");
menuBar.add(menu5);
//primeira linha do quinto menu chamado "Imprimir"
menuItem5[0] = new JMenuItem("Lista de Filmes");
menuItem5[0].setMnemonic(KeyEvent.VK_W+KeyEvent.VK_1);
menuItem5[0].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_5, ActionEvent.ALT_MASK));
menu5.add(menuItem5[0]);
//segunda linha do quinto menu chamado "Imprimir"
menuItem5[1] = new JMenuItem("Filme");
menuItem5[1].setMnemonic(KeyEvent.VK_W+KeyEvent.VK_2);
menu5.add(menuItem5[1]);
//sexto menu(de radio buttons) chamado "Aparência"
menu6=new JMenu("Aparência");
menu6.setMnemonic(KeyEvent.VK_Z);
menu6.getAccessibleContext().setAccessibleDescription("Troca a aparência do Programa");
menuBar.add(menu6);
ButtonGroup group = new ButtonGroup();
//primeira linha do sexto menu
rbMenuItem[0]= new JRadioButtonMenuItem("Java Look and Feel");
rbMenuItem[0].setSelected(true);
rbMenuItem[0].setMnemonic(KeyEvent.VK_Z+KeyEvent.VK_1);
group.add(rbMenuItem[0]);
rbMenuItem[0].addItemListener(this);//ouvinte de evento para o radioButton
menu6.add(rbMenuItem[0]);
//segunda linha do sexto menu
rbMenuItem[1] = new JRadioButtonMenuItem("Macintosh Look and Feel");
rbMenuItem[1].setMnemonic(KeyEvent.VK_Z+KeyEvent.VK_2);
group.add(rbMenuItem[1]);
rbMenuItem[1].addItemListener(this);
menu6.add(rbMenuItem[1]);
//terceira linha do sexto menu
rbMenuItem[2] = new JRadioButtonMenuItem("Motif Look and Feel");
rbMenuItem[2].setMnemonic(KeyEvent.VK_Z+KeyEvent.VK_3);
group.add(rbMenuItem[2]);
rbMenuItem[2].addItemListener(this);
menu6.add(rbMenuItem[2]);
//quarta linha do sexto menu
rbMenuItem[3] = new JRadioButtonMenuItem("Windows Look and Feel");
rbMenuItem[3].setMnemonic(KeyEvent.VK_Z+KeyEvent.VK_4);
group.add(rbMenuItem[3]);
rbMenuItem[3].addItemListener(this);
menu6.add(rbMenuItem[3]);
//quinta linha do sexto menu
rbMenuItem[4] = new JRadioButtonMenuItem("Kusnetsoff Look and Feel");
rbMenuItem[4].setMnemonic(KeyEvent.VK_Z+KeyEvent.VK_5);
//inserir kusnetsoff Look&Feel
group.add(rbMenuItem[4]);
rbMenuItem[4].addItemListener(this);
menu6.add(rbMenuItem[4]);
adicionaListeners();
return menuBar;
}
//***************************eventos do Mouse****************************
public void mouseClicked(MouseEvent e) {
}
private void checkForTriggerEvent(MouseEvent e) {
// if(e.isPopupTrigger())
// popup.show(e.getComponent(), e.getX(), e.getY());
}
public void mouseReleased(MouseEvent e) {
if(e.getSource() == desktop) {
checkForTriggerEvent(e);
}
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
/* if(e.getSource() == desktop) {
checkForTriggerEvent(e);
}*/
}
public void mouseDragged(MouseEvent e) {
}
public void mouseMoved(MouseEvent e) {
}
//ação dos menus aqui!
public void actionPerformed(ActionEvent e) {
if(e.getSource() == menuItem[0])
exibirCadastro(e);
/* else if(e.getSource() == menuItem[1])
quit();
else if(e.getSource() == menuItem[2])
quit();
else if(e.getSource()== menuItem[3])
exibirCadastro();//para um novo cadastro
else if(e.getSource()== menuItem[4])
exibirCadastro();//para abrir o cadastro-visualizar!-
else if(e.getSource()== menuItem[5])
deletarCadastro();
else if(e.getSource()== menuItem[6])
selecionarCadastro();
else if(e.getSource()==menuItem[7])
System.exit(0); //sai da aplicação
else if(e.getSource()==menuItem2[0])
editarCadastro();//edita um cadastro!
else if(e.getSource()==menuItem2[1])
editarFilme();
else if(e.getSource()==menuItem2[2])
editarDiretor();
else if(e.getSource()==menuItem2[3])
editarAtor();
else if(e.getSource()==menuItem2[4])
editarAno_De_Producao(); */
else if(e.getSource()==menuItem3[0])
exibirConsulta(e); /*//exibirá todos os cadastros
else if(e.getSource()==menuItem3[1])
exibirFilme();
else if(e.getSource()==menuItem3[2])
exibirDiretor();
else if(e.getSource()==menuItem3[3])
exibirAtor();
else if(e.getSource()==menuItem3[4])
exibirAno_De_Producao();
else if(e.getSource()==menuItem4[0])
adicionarFavoritos();
else if(e.getSource()==menuItem4[1])
organizarFavoritos();
else if(e.getSource()==menuItem5[0])
imprimirListaDeFilmes();
else if(e.getSource()==menuItem5[1])
imprimirFilme();
*/
}
public void itemStateChanged(ItemEvent e) {
if(rbMenuItem[0].isSelected()){
mudaAparencia(lookAndFeelAtual);
}
else if(rbMenuItem[1].isSelected())
mudaAparencia(mac);
else if(rbMenuItem[2].isSelected()){ //MUITOS PROBLEMAS COM ESSE L&FEEL
try{ Skin theSkinToUse = SkinLookAndFeel.loadThemePack("toxicthemepack.zip");
SkinLookAndFeel.setSkin(theSkinToUse);
UIManager.setLookAndFeel(skin);
SwingUtilities.updateComponentTreeUI(frame);
}catch(Exception exc){
exc.printStackTrace();
}
frame.repaint();
}// mudaAparencia(motif);
else if(rbMenuItem[3].isSelected())
mudaAparencia(windows);
else if(rbMenuItem[4].isSelected())
mudaAparencia(kunststoff);
}
/************Método para alterar o Look & Feel da Aplicação**********************/
/*
* @method mudaAparencia mudará a aparência da tela principal do programa
* @return void
*/
public void mudaAparencia(String aparencia){
try {
UIManager.setLookAndFeel(aparencia);
SwingUtilities.updateComponentTreeUI(frame);
}
catch (InstantiationException e) {
e.printStackTrace();
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
catch (UnsupportedLookAndFeelException e){
e.printStackTrace();
}
catch (IllegalAccessException e) {
e.printStackTrace();
}
frame.repaint();
//frame.pack();-não usar!
}//fim de mudaAparencia()
//método que será responsável pela exibição do cadastro
private void exibirCadastro(ActionEvent evt) {
if (cadastro == null) {
// inicia frame
cadastro = new Cadastro(this);
// adiciona o frame no DesktopPane
desktop.add(cadastro);
}
// Exibe o frame
cadastro.setVisible(true);
}
// este método está declarado como público para poder ser executado por outra classe
public void fecharCadastro(ActionEvent evt) {
// verifica se há uma referencia válida para o objeto
if (cadastro != null) {
// libera o objeto
cadastro.dispose();
cadastro = null;
}
}
//método responsável pela criação da tela de consulta de dados
private void exibirConsulta(ActionEvent evt) {
if (consulta == null) {
// inicia frame interno
consulta = new Consulta(this);
// adiciona o frame no DesktopPane
desktop.add(consulta);
}
// Exibe o frame
consulta.setVisible(true);
}
//é público para poder ser executado por outra classe
public void fecharConsulta(ActionEvent evt) {
// verifica se há uma referencia válida para o objeto
if (consulta != null) {
// libera o objeto
consulta.dispose();
consulta = null;
}
}
public void adicionaListeners(){
for(int i=0;i<8;i++)
menuItem[i].addActionListener(this);
for(int i=0;i<5;i++)
{ menuItem2[i].addActionListener(this);
menuItem3[i].addActionListener(this);}
for(int i=0;i<2;i++)
{ menuItem4[i].addActionListener(this);
menuItem5[i].addActionListener(this);}
}
public Container criaContentPane() {
//Create the content-pane-to-be.
JPanel contentPane = new JPanel(new BorderLayout());
desktop = new JDesktopPane(){
Image im = (new ImageIcon("background.jpg")).getImage();
public void paintComponent(Graphics g){
g.drawImage(im,0,0,this); }
};//fim do JDesktopPane
contentPane.setOpaque(true);
/*//Create a scrolled text area.
saida = new JTextArea(5, 30);
saida.setEditable(false);
scroll = new JScrollPane(saida);
//Add the text area to the content pane.
contentPane.add(scroll, BorderLayout.CENTER);*/
contentPane.add(desktop);//adiciono o JDesktopPane ao JPanel
return contentPane;
}
private void exibeTela(){
//Decora a janela.
JFrame.setDefaultLookAndFeelDecorated(true);//não é suportado em todos os L&F´s
JDialog.setDefaultLookAndFeelDecorated(true);
//Cria e seta a janela.
frame = new JFrame("Cadastro de filmes em DVD");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//seta a barra e o content pane anexando-os ao JFrame.
frame.setJMenuBar(this.criaMenu());
frame.setContentPane(this.criaContentPane());
//adiciona o Mouses Listener aos componentes
frame.addMouseListener(this);
frame.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
//ajusta o tamanho da janela
frame.setSize(900,520);
//centraliza o frame na tela
frame.setLocationRelativeTo(null);
//mostra a janela.
frame.setVisible(true);
}//fim de exibeTela()
public static void main(String[] args) {
try{
UIManager.put ("FileChooser.lookInLabelText", "Consulte:");
UIManager.put ("FileChooser.lookInLabelMnemonic", "o");
UIManager.put ("FileChooser.fileNameLabelText", "Nome do arquivo:");
UIManager.put ("FileChooser.fileNameLabelMnemonic", "N");
UIManager.put ("FileChooser.filesOfTypeLabelText", "Arquivos do tipo:");
UIManager.put ("FileChooser.filesOfTypeLabelMnemonic", "t");
UIManager.put ("FileChooser.upFolderToolTipText", "Um Nível Acima");
UIManager.put ("FileChooser.upFolderAccessibleName", "Para Cima");
UIManager.put ("FileChooser.homeFolderToolTipText", "Inicio");
UIManager.put ("FileChooser.homeFolderAccessibleName", "Inicio");
UIManager.put ("FileChooser.newFolderToolTipText", "Criar uma Nova Pasta");
UIManager.put ("FileChooser.newFolderAccessibleName", "Nova Pasta");
UIManager.put ("FileChooser.listViewButtonToolTipText", "Lista");
UIManager.put ("FileChooser.listViewButtonAccessibleName", "Lista");
UIManager.put ("FileChooser.detailsViewButtonToolTipText", "Detalhes");
UIManager.put ("FileChooser.detailsViewButtonAccessibleName", "Detalhes");
UIManager.put ("FileChooser.cancelButtonText", "Cancelar");
UIManager.put ("FileChooser.cancelButtonMnemonic", "C");
UIManager.put ("FileChooser.cancelButtonToolTipText","Cancelar");
UIManager.put ("FileChooser.openButtonText", "Abrir");
UIManager.put ("FileChooser.openButtonMnemonic", "A");
UIManager.put ("FileChooser.openButtonToolTipText","Abrir ");
UIManager.put ("FileChooser.directoryOpenButtonText","Abrir");
UIManager.put ("FileChooser.directoryOpenButtonToolTipText","Abrir Diretório");
UIManager.put ("FileChooser.saveButtonText","Salvar");
UIManager.put ("FileChooser.saveButtonToolTipText","Salvar Arquivo");
UIManager.put ("FileChooser.saveInLabelText", "Salvar em:");
//UIManager.update();
}
catch(Exception e){
e.printStackTrace();
System.err.println("UIManager nao suportado!");
}
//Agenda um trabalho para o event-dispatching thread:
//cria e mostra a aplicação GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
new Principal();}
});
}//fim do main()
}//fim da classe Principal
Lembrando q vc deverá ter os respectivos Look And Feels no Classpath(procure os jars na net)