Melhorar a interface de uma aplição pronta (RESOLVIDO)

Oi pessoa eu comecei a programar em java faz pouco tempo, estou com duvidas a respeito de interface.
Eu tenho um programa onde eu queria mudar os butoes, eu ouvir falar de look and feel liquid e costei da interface por que achei bem interessante os butoes ficarem ovais, mas eu tentei fazer e como naum tenho muita experiencia naum funcionou eu o seguinte codigo:

[code]package teste;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.plaf.multi.MultiLookAndFeel;

public class MudarLook extends Test implements ActionListener {
private javax.swing.UIManager.LookAndFeelInfo looks[];
private int Motif;
private int Windows;
private int Metal;

public void mudaLookAndFeel(int index) {
	Motif = 0;
	Windows = 1;
	Metal = 2;
	
	looks = javax.swing.UIManager.getInstalledLookAndFeels();
	try {
	javax.swing.UIManager.setLookAndFeel( looks[index].getClassName() );
	javax.swing.SwingUtilities.updateComponentTreeUI( this );
	} catch (Exception e) {
	e.printStackTrace();
	}
	}


@Override
public void actionPerformed(ActionEvent arg0) {
	int index = 0;
	mudaLookAndFeel(Motif);		
}
public static void main(String[] args) {
	MultiLookAndFeel app = new MultiLookAndFeel();
}

}
[/code]
So que eu sei que esta faltando alguma coisa tem como eu modificar o formato dos butoes sem precisar usar esse look and feel liquid?
E alguem pode ver o que esta faltando no meu codigo?
Por favor me dei alguma dica de como melhorar a interface da minha aplicacao ela esta muito feinha esse eh o codigo dela:

[code]package teste;

import javax.swing.*;

public class Test extends JFrame implements ActionListener
{
public static JLabel L1, L2;
private JLabel L3, L4, L5;
private JComboBox Cb;
private JTextField Txt1, Txt2;
public static JTextField Txt4, Txt3;
public static JTextArea TxtArquivo;
private JFileChooser Arquivo;
private JButton CmdConsultar, CmdGerar, CmdSair, CmdC;
public static JTable table;
public static DefaultTableModel model;
private JScrollPane js;
public static GridLayout grade;

private void setCenter(JFrame frame)   
{   
    Dimension paneSize = frame.getSize();   
    Dimension screenSize = frame.getToolkit().getScreenSize();   
    frame.setLocation((screenSize.width - paneSize.width) / 2, (screenSize.height - paneSize.height) / 2);   
}   

public Test()   
{   
    setSize(800, 590);   
    setResizable(false);   
    setTitle("Envio de dados");   
    setCenter(this);   
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
    Container cp = getContentPane();   
    cp.setLayout(null);   

    model = new DefaultTableModel();   
    model.addTableModelListener(table);
    model.addColumn("Nome do cliente");   
    model.addColumn("Endereco do cliente");   
    model.addColumn("CPF");   
    model.addColumn("CGC");   
    model.addColumn("Bairro");   
    model.addColumn("CEP");   
    model.addColumn("Telefone");   
    model.addColumn("Data do vencimento");   
    model.addColumn("Data da compra");   
    model.addColumn("Valor do Debito");   
    model.addColumn("Codigo do programa");   
    model.addColumn("Numero da ligacao");   

    L5 = new JLabel(" Dados dos Clientes");
    //L5.setFont(new Font("Dialog", Font.PLAIN, 12));
    js = new JScrollPane(L5);   
    js.setBounds(50, 60, 115, 21);   
    js.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);   
    cp.add(js);   

    table = new JTable();   
    table.setModel(model);
    table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);  
    table.setAutoscrolls(true);
    
    int rows = 3; 
    int cols = 3; 
    JTable tabela = new JTable (rows, cols); 
    
    // Desativar auto redimensionamento 
    table.setAutoResizeMode (JTable.AUTO_RESIZE_OFF); 
    
    // Set a primeira coluna visível a 100 pixels de largura 
    //int width;
    int vColIndex = 0;//nome do cliente
    TableColumn col = table.getColumnModel (). getColumn (vColIndex);
    col.setPreferredWidth (250);
    
    int vColIndex1 = 1;//endereco
    TableColumn col1 = table.getColumnModel (). getColumn (vColIndex1); 
    col1.setPreferredWidth (300);
    
    int vColIndex2 = 2;//cpf
    TableColumn col2 = table.getColumnModel (). getColumn (vColIndex2);
    col2.setPreferredWidth (80);
    
    int vColIndex3 = 3;//cgc
    TableColumn col3 = table.getColumnModel (). getColumn (vColIndex3); 
    col3.setPreferredWidth (100);
    
    int vColIndex4 = 4;//coluna de nome do bairro
    TableColumn col4 = table.getColumnModel (). getColumn (vColIndex4);
    col4.setPreferredWidth (200);
    
    int vColIndex5 = 5;//cep
    TableColumn col5 = table.getColumnModel (). getColumn (vColIndex5); 
    col5.setPreferredWidth (70);
    
    int vColIndex6 = 6;//telefone
    TableColumn col6 = table.getColumnModel (). getColumn (vColIndex6); 
    col6.setPreferredWidth (70);



    js = new JScrollPane(table);   
    js.setBounds(50, 80, 700, 400);          
    cp.add(js);   
    Arquivo = new JFileChooser(".");   

    L1 = new JLabel(" NSA");
    js = new JScrollPane(L1);   
    js.setBounds(20, 20, 33, 25);   
    js.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);   
    cp.add(js);   

    Txt2 = new JTextField();//referente ao NSA   
    Txt2.addActionListener(this);   
    js = new JScrollPane(Txt2);   
    js.setBounds(60, 20, 170, 25);   
    js.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);   
    cp.add(js);   

    L2 = new JLabel(" Caminho dos dados");   
    js = new JScrollPane(L2);   
    js.setBounds(250, 20, 120, 25);   
    js.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);   
    cp.add(js);   

    Txt1 = new JTextField();//referente ao caminho de dados   
    js = new JScrollPane(Txt1);   
    Txt1.addActionListener(this);
    js.setBounds(380, 20, 250, 25);
    js.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);   
    cp.add(js);   

    CmdC = new JButton("...");   
    CmdC.setBounds(640, 20, 25, 25);   
    CmdC.addActionListener(this);   
    cp.add(CmdC);   

    CmdConsultar = new JButton("Consultar");   
    CmdConsultar.setBounds(680, 20, 90, 25);   
    CmdConsultar.addActionListener(this);   
    cp.add(CmdConsultar);   

    CmdGerar = new JButton("Gerar");   
    CmdGerar.setBounds(600, 500, 70, 25);   
    CmdGerar.addActionListener(this);   
    cp.add(CmdGerar);   

    L3 = new JLabel(" Total de Clientes");   
    js = new JScrollPane(L3);   
    js.setBounds(50, 500, 105, 25);   
    js.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);   
    cp.add(js);   

    //para receber o resultado da soma de numero de clientes   
    Txt3 = new JTextField();   
    js = new JScrollPane(Txt3);   
    js.setBounds(160, 500, 100, 25);   
    js.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);   
    cp.add(js);   

    TxtArquivo = new JTextArea();   
    TxtArquivo.setVisible(false);   
    js = new JScrollPane(TxtArquivo);   
    js.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);   
    //js.setBounds(50, 80, 700, 400);   
    cp.add(js);   

    L4 = new JLabel(" Total de Debitos");   
    js = new JScrollPane(L4);   
    js.setBounds(310, 500, 100, 25);   
    js.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);   
    cp.add(js);   

    //para receber o valor total de debitos dos clientes   
    Txt4 = new JTextField();   
    js = new JScrollPane(Txt4);   
    js.setBounds(420, 500, 100, 25);   
    js.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);   
    cp.add(js);   

    CmdSair = new JButton("Sair");   
    CmdSair.setBounds(680, 500, 70, 25);   
    CmdSair.addActionListener(this);   
    cp.add(CmdSair);   
}   

public void actionPerformed(ActionEvent e)   
{   
    if (e.getSource() == CmdConsultar) {   
        CmdConsultar = NovoRecebeBanco.main(null);   
    }   
    if (e.getSource() == CmdC) {   
        JFileChooser chooser = new JFileChooser();   
        chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        chooser.setLocation(0, 0);   

        // Esta linha alinha o JFileChooser no centro   
        int returnVal = chooser.showSaveDialog(this);   
        // INICIO - ALTERACAO   
        if (returnVal == JFileChooser.APPROVE_OPTION) {   
            Txt1.setText(chooser.getSelectedFile().getAbsolutePath());
            
        }   
    // FIM - ALTERACAO   
    }   
    if (e.getSource() == CmdGerar) {   
        // INICIO - ALTERACAO   
        if (Txt1.getText().trim().equals("")) {   
            JOptionPane.showMessageDialog(null, "Digite o local onde voce quer salvar o arquivo");   
            return;   
        }   
        if (Txt2.getText().trim().equals("")) {   
            JOptionPane.showMessageDialog(null, "Digite um nome para gerar o arquivo");   
            return;   
        } else {
        	String arq = Txt1.getText();   
            if (!arq.endsWith(File.separator)) {   
                arq += File.separator;   
            }   
            arq += Txt2.getText();   
            try {   
                salvar(arq, TxtArquivo.getText());   
                JOptionPane.showMessageDialog(null, "Arquivo salvo com sucesso!");   
            } catch (IOException ioe) {   
                JOptionPane.showMessageDialog(null, "Não foi possível salvar arquivo!");   
            }   
        //  }   
        // FIM - ALTERACAO   
        }   
    }   
    if (e.getSource() == CmdSair) {   
        this.dispose();   
    }   
}   

public void salvar(String nomeArq, String conteudoArq) throws IOException   
{   
    // INICIO - ALTERACAO   
    PrintWriter out = new PrintWriter(new FileWriter(nomeArq));   
    out.print(conteudoArq);   
    out.close();   
    // FIM - ALTERACAO   
} 


public static void main(String args[])   
{
	Test app = new Test();   
    app.show();   
}   

} [/code]
:?:

vou te mostrar como eu utilizo ele.
Eu baixei o .jar do look and feel liquid, ai adiciono ele ao meu projeto, entao eu faço isso apos a inicialização dos componentes.

        try
        {
            UIManager.setLookAndFeel("com.birosoft.liquid.LiquidLookAndFeel");
            SwingUtilities.updateComponentTreeUI(this);
        }
        catch(Exception erro) 
        {
           JOptionPane.showMessageDialog(null,erro);
        }
    }

ai pronto, os meus botões ficam arredondados.
:lol: :lol: :lol:

Vc baixo de onde?
:lol:

Vou tentar anexar ele aqui ta, qqr coisa da um toque, é a primeira fez q anexo alguma coisa aqui no forum

So uma dica o look and feel tem q ser colocado na classe main sua e o jar no classpath de sua aplicação.

Exemplo

[code]public static void main(String args[]){
try{
UIManager.setLookAndFeel(“com.birosoft.liquid.LiquidLookAndFeel”);
SwingUtilities.updateComponentTreeUI(this);
}catch(Exception erro) {
JOptionPane.showMessageDialog(null,erro);
}
}

     Test app = new Test();     
     app.show();     

}
[/code]

Ei eu tenho que colocar essa .jar em que pasta do meu projeto, por que eu tentei colocar em algumas pasta mas naum acontece nada?!
:?:

Eu coloquei no main mas ta dadando um erro nessa linha:

um erro de sintaxe, diz que eu naum posso usar this no contexto de uma static

Vcs sabem me dizer porque esta dando esse erro?

[quote=samea]Ei eu tenho que colocar essa .jar em que pasta do meu projeto, por que eu tentei colocar em algumas pasta mas naum acontece nada?!
:?:[/quote]

Faz o seguinte cria uma pasta no seu projeto com o nome lib

e copie o arquivo .jar la…

Proximo passo vc clica com o botao direito sobre o arquivo.jar

Vai na opção Build Path >> add to Build Path

Pronto o jar esta adicionado no seu projeto agora vc pode importar as classes que precisa pra funcionar o look and feel

Esse exemplo estou utilizando o Eclipse.

Espero ter ajudado.

Naum tem essa opcao de build path uma outra vez quando eu fui gerar o .jar tambem procurei e naum encontrei so buid all, build project e build working set!
Posso usar alguma dessas opcoes?

[quote=samea]Eu coloquei no main mas ta dadando um erro nessa linha:

um erro de sintaxe, diz que eu naum posso usar this no contexto de uma static

Vcs sabem me dizer porque esta dando esse erro?[/quote]

Se você seguiu o exemplo do usuário correainfo, não dá mesmo para usar a palavra reservada “this” num contexto estático, no caso o método “public static void main(String[] args)”, já que contextos estáticos não conseguem ter referência de qual instância do objeto da classe a palavra “this” irá se referir.

O código do usuário marcelopacheco85 ainda assim seria válido, mas ao invés de colocar o código no método “main”, o ponto de entrada da aplicação, você pode colocar esse código do usuário marcelopacheco85 num método inicializador do componente gráfico ou quem sabe no construtor.

Inté.

[quote=correainfo][quote=samea]Ei eu tenho que colocar essa .jar em que pasta do meu projeto, por que eu tentei colocar em algumas pasta mas naum acontece nada?!
:?:[/quote]

Faz o seguinte cria uma pasta no seu projeto com o nome lib

e copie o arquivo .jar la…

Proximo passo vc clica com o botao direito sobre o arquivo.jar

Vai na opção Build Path >> add to Build Path

Pronto o jar esta adicionado no seu projeto agora vc pode importar as classes que precisa pra funcionar o look and feel

Esse exemplo estou utilizando o Eclipse.

Espero ter ajudado.[/quote]

O procedimento está correto, mas parece que para que samea consiga fazer o procedimento precisa-se de mais detalhes.

Depois de colocar o arquivo jar numa pasta lib dentro do projeto, deve-se usar F5 enquanto se navega no projeto para que o arquivo seja detectado como parte do projeto.

Lá na aba “project explorer”, que normalmente fica no lado esquerdo da IDE, abra o nó da pasta “lib” que deve ter aparecido no projeto.

O arquivo jar necessário deve aparecer quando o nó da pasta “lib” for aberto. Aí é só clicar com o botão direito sobre o jar e seguir o resto do procedimento do usuário correainfo.

Inté.

ola Galera, o meu Look And Feel funcionou. Coloquei o codigo do marcelo no metodo contrutor.
Porem o JPanel que estava ali antes sumiu. Oque aconteceu ???
Como faco para ele aparecer novamente???

Funcionou direitinho! Não mudou apenas a aparência dos botões, mas te todos os componentes.
Mas tem como eu selecionar qual tipo de aparência eu quero??Ou só existe uma opção de aparência?
Alguém sabe?
Valeu!!