Pessoal estou fazendo um jogo de Damas, estou quase terminando. Andei pesquisando sobre look and feel em alguns foruns e baixei o JGoddies-looks. Adicionei ele no ClasPath, as bibliotecas da aplicação. Ele importa as classes normalmente, Ex: PlasticLookandFeel, Plastic3DLookandFeel etc no auto-completar. Só que quando eu vou implementar ele na main com o metodo java.awt.EventQueue.invokeLater não aparece nada de modificação. E quando eu fui alterar um estilo do meu JMenubar ai ele retornou varios erros. Ai vai o codigo:
package game;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import com.jgoodies.looks.BorderStyle;
import com.jgoodies.looks.HeaderStyle;
import com.jgoodies.looks.Options;
import com.jgoodies.looks.plastic.Plastic3DLookAndFeel;
import com.jgoodies.looks.plastic.PlasticButtonUI;
import com.jgoodies.looks.plastic.PlasticLookAndFeel;
import com.jgoodies.looks.plastic.theme.DarkStar;
/**
*
*
* @author fabricio
*
*
*
*/
public class Principal extends JFrame implements ActionListener {
JLabel texto, nome, nomeori;
ImageIcon imgDama;
String nomeuser;
JMenuBar barraMenus; // barra de menus
JMenuItem itemdeMenu; // intem de um menu
private JPanel contentpane;
private JProgressBar progressbar = new JProgressBar();
int i;
//PlasticLookAndFeel lookandfeel = new PlasticLookAndFeel();
/**
* @author fabricio
*/
public Principal(){
setExtendedState(JFrame.MAXIMIZED_BOTH);
imgDama = new ImageIcon("titulo.jpg"); // img do .jar, tem q ta no mesmo diretorio
nome = new JLabel("Nome jogador:");
nome.setBounds(600, 180, 100, 20);
nome.setVisible(false);
this.getContentPane().add(nome);
nomeori = new JLabel("");
nomeori.setBounds(700, 180, 100, 20);
nomeori.setVisible(false);
this.getContentPane().add(nomeori);
barraMenus = new JMenuBar();
this.setJMenuBar(barraMenus);
barraMenus.putClientProperty(Options.HEADER_STYLE_KEY, HeaderStyle.BOTH);
barraMenus.putClientProperty(PlasticLookAndFeel.BORDER_STYLE_KEY, BorderStyle.SEPARATOR);
barraMenus.putClientProperty(PlasticLookAndFeel.IS_3D_KEY, Boolean.FALSE);
JMenu arquivo = new JMenu("Arquivo");
JMenu edit = new JMenu("Editar");
barraMenus.add(arquivo);
barraMenus.add(edit);
JMenuItem novo = new JMenuItem("Novo Jogo");
JMenuItem abrir = new JMenuItem("Recordes");
JMenuItem sair = new JMenuItem("Sair");
novo.addActionListener(this);
sair.addActionListener(this);
JMenuItem recortar = new JMenuItem("Recortar");
JMenuItem copiar = new JMenuItem("Copiar");
JMenuItem colar = new JMenuItem("Colar");
arquivo.add(novo);
// linha horizontal
arquivo.addSeparator();
arquivo.add(abrir);
arquivo.addSeparator();
arquivo.add(sair);
edit.add(recortar);
edit.addSeparator();
edit.add(copiar);
edit.addSeparator();
edit.add(colar);
texto = new JLabel(imgDama);
texto.setBounds(180, 50, imgDama.getIconWidth(), imgDama.getIconHeight());
texto.setVisible(true);
this.getContentPane().add(texto);
// add Painel Tabuleiro no Frame
this.getContentPane().add(new Tabuleiro());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
/* Posicao inicio Tabuleiro
* x=180 y=180
*
* Posicao Final Tabuleiro
* x=495 y=495
*
*/
}
public void addNome(){
nomeuser = JOptionPane.showInputDialog("Digite seu nome: "); // String recebendo o nome a ser digitado
nome.setVisible(true); // deixa Label padrão do user visivel
// label q recebe o nome digitado
nomeori.setText(nomeuser);
nomeori.setVisible(true);
}
/**
* @param args
* @exception Exception
*
*/
public static void main(String[] args) {
TesteTempo2 teste = new TesteTempo2().start(); // inicia contador + JProgressbar
// look and feel do sistema, no meu caso aparencia do Windows
//PlasticLookAndFeel.setPlasticTheme(new DarkStar());
/*try{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(Exception ue){
ue.printStackTrace();
}*/
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try{
UIManager.setLookAndFeel(new Plastic3DLookAndFeel());
}catch(UnsupportedLookAndFeelException ue){
ue.printStackTrace();
}
}
});
new Principal().setVisible(true);
teste.stop();
System.out.println("Tempo total p/ iniciar: " +teste.getTempodecorrido());
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
String evento;
evento = arg0.getActionCommand();
if(evento.equalsIgnoreCase("Sair")){
System.exit(0);
}
if(evento.equalsIgnoreCase("Novo Jogo")){
addNome(); // executa metodo p/ adicionar nome ao Label
}
}
}
Se alguem souber o que é me da uma luz ! Valeu.
Tutorial que eu li pra fazer: http://rfiume.blogspot.com.br/2007/01/look-and-feel-jgoodies-looks.html ;
Erro que dá no console:
Exception in thread “AWT-EventQueue-0” java.lang.NoClassDefFoundError: com/jgoodies/common/base/SystemUtils
Parece se algo que ele não encontra nos diretórios do jgoodies. Se alguem souber me ajude pfvr.
E aí, galera!
Não sei se já consegui resolver o problema, mas fica aki a dica pra quem passar por isso.
Isso aí acontece simplesmente porque não foi adicionado o .jar commons do jgoodies no classpath.
Só adicionar q vai rodar belezinha.
Abraço!