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

12 respostas
samea
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:
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();
	}

}
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:
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();   
    }   
}
:?:

12 Respostas

marcelopacheco85

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:

samea

Vc baixo de onde?
:lol:

marcelopacheco85

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

correainfo

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

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();     
}
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?!
:?:

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?

correainfo

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?!
:?:

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.

samea

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?

KWill

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?

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é.

KWill

correainfo:
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?!
:?:

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.

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é.

S

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???

L

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!!

Criado 4 de fevereiro de 2009
Ultima resposta 8 de fev. de 2009
Respostas 12
Participantes 6