Mudando de aparencia dos controles

4 respostas
P

Dae galera

Vocês devem ter visto um tópico meu antigo sobre o awt no Linux e como ele fica feio!!! Eu postei isso num fórum de Linux que freqüento achando que era o Xorg que precisava configurar talvez, mas não era, me disseram que era o java mesmo e que tinha como alterar essa aparencia dos controles, para Windows, GTK, entre outros!!! Eu gostaria de saber como se faz isso porque realmente eu gosto de trabalhar com o Swing, mas a aparencia padrão dele é um tanto pesadinha, talvez mundanda pra uma aparencia mais leve ficaraia mais leve, mas seria legal o usuário ter a opção de mudar a aparencia do programa!!! Alguém sabe como se faz!? Vou mostrar a calculadora que fiz no Java usando Swing, até semana passada eu não sabia criar nenhum botão em Swing e hoje eu já sei fazer bastante coisa com ele!! Vejam:

Ela tá bem básica ainda, somente com 4 funções da aritmética, porém totalemten funcional ao NumPad, que nem a calculadora do Windows!!! Mas foi legal fazer ela, passe a semana toda fazendo ela e aprendi muito, gostaria de agradecer o povo daqui que me ajudou!!! Realmente aprendi bastante em uma semana, imagina em 1 mês :grin: Eu to otimista!!!

Mas então eu gostaria de por uma interface mais leve pra ela, mudando a aparencia dos controles, como me disseram!!! Porque uma calculadora ser pesadinha é meio chato!!

Obrigado
T+

Pilantra :cool:

4 Respostas

J

Oi

Pilantra, da pra fazer isso sim… No próprio JDK tem um exemplo de app que faz isso… confere aí no teu em:

JAVA_HOME/demo/jfc/SwingSet2

T+

P

Caracolis, eu estou vendo aqui o exemplo, mas está tão confuso!!! Eu pesquisei no site da sun também e não consegui intender!!! Eu vou fazer uns testes aqui e ver se dá certo, mas será que alguém já tem mastigado pra mim!? :oops:

Obrigado
T+

Pilantra :cool:

P

Vejam isso, um exemplo que eu estava fazendo de uma apostila, em AWT, estou usando de cobaia pra testar o look & feel!!

// Controle Combo //

import java.awt.*;
import java.awt.event.*;
import java.lang.reflect.*;
import javax.swing.*;

public class ComboDemo extends Frame implements ItemListener, WindowListener {
// Varieveis //

public Choice combo;
public Label lb_exibir;

// --------- //

public static void main(String args[]) {

        UIManager.setLookAndFeel("com.sun.java.swing.plaf.gtk.GTKLookAndFeel");

   	ComboDemo f = new ComboDemo();
	f.setBackground(Color.white);	
	f.show();
}



public ComboDemo() {
   super("Demonstração do Combo");
   setSize(200,200);
   addWindowListener(this);
   
   // Instanciacao dos controles //
   combo = new Choice();
   combo.add("Branco");
   combo.add("Vermelho");
   combo.add("Azul");
   combo.add("Verde");   
   combo.addItemListener(this);
   lb_exibir = new Label("Seleção: Branco");
   lb_exibir.setBackground(Color.gray);
   
   add(lb_exibir, BorderLayout.NORTH);
   add(combo, BorderLayout.WEST);
}

// Interface ItemListener //

public void itemStateChanged(ItemEvent e) {
	if (e.getSource() == combo) {
	    // Verifica selecao //
	    if (combo.getSelectedIndex() > -1) {
	    	lb_exibir.setText("Seleção: " + combo.getSelectedItem());
		
			switch (combo.getSelectedIndex()) { 
			   case 0: 
			     setBackground(Color.white);
			     break;
			   case 1:
			     setBackground(Color.red);
			     break;
			   case 2:
			     setBackground(Color.blue);
			     break;
			   case 3:
			     setBackground(Color.green);
			     break;
			}
		repaint();
	     } else {
	     	lb_exibir.setText("Sem seleção");
	     }
	}
}

// Interface WindowListener
public void windowClosing(WindowEvent e) { 
	System.exit(0); 
}
public void windowClosed(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowOpened(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public void windowActivated(WindowEvent e) {}
public void windowDeactivated(WindowEvent e) {}
}

Eu importei o java.lang porque eu vi no exemplo do meu java home, mas mesmo assim não deu certo!!!!

B

Olá Pilantra, parece que o que você quer é mudar o look and feel da aplicação, bom se for tente usando a classe javax.swing.UIManager, dentro de algum método que você possa chamar use +/- assim:

try{
  UIManager.setLookAndFeel(UIManaher.getSystemLookAndFeelClassName());
   myFrame.updateUI();
}catch(Exception e){}

Neste caso vai musar para o look and feel do sistema, para mais look and feel é no pacote javax.swing.plaf. … , use as classes que terminem com LookAndFeel, por exemplo:
javax.swinx.plaf.multi.MultiLookAndFeel .

Uma outra coisa boa pra você olhar é um projeto que tem na internet, o [list=http://www.cafeh.com.br/projects/4/index.jsp]juruna[/list], ele faz esta mudança de look and feel.

Espero ter ajudado, valeu

Criado 23 de janeiro de 2005
Ultima resposta 24 de jan. de 2005
Respostas 4
Participantes 3