Criando uma interface com o gerenciador de layout JGoodies

4 respostas
Lex-dmm

:idea:
Caso alguem tenha dificuldade para implementar interfaces com o GridBagLayout ou tem preguiça porque é muito trabalhoso, uma alternativa são os pacotes do JGoodies. Fiz uma telinha pra galera ver mais ou menos como se usa. Porém fiz somente o que eu aprendi.

Para Baixar os pacotes do JGoodies. Segue o Link. No caso Usei o Forms.
[url]http://www.jgoodies.com/downloads/libraries.html[/url]

import java.awt.Color;
import java.awt.Container;
import java.awt.Image;
import java.awt.Toolkit;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;

/*
 * Created on 02/08/2005
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */

/**
 * @author Lex Luthor
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class TesteJGoodies extends JFrame{

	private Container cont;
	private JPanel panelBackGound;
	private JPanel panel;

	/**
	 * 
	 */
	public TesteJGoodies() {
		super(" Teste com JGoodies "); //título
		
		
		cont = this.getContentPane(); 
			    	    
	    // Pega icone para a frame passando o diretório do icone.gif
	    Image icon = Toolkit.getDefaultToolkit().getImage("Battery.gif");
	    this.setIconImage(icon); //adiciona o icone a frame.	    
	    this.setResizable(false); //impede que a frame seja maximizada.
	    	    
	    panelBackGound = new JPanel(); //Painel de fundo.
	    panel = new JPanel(); //Painel da Imagem.jpg
	    //Pega a imagem para o painel passando o diretório da imagem.
	    Icon imgem = new ImageIcon("logo.jpg");	
	    JLabel img = new JLabel(imgem);
		panel.add(img);
	    	    
		//Trata o layout com classes do JGoodies.
		//ao contrário do GridBag ou do GridLayout 
		//que trabalha com linha e coluna.
		//No JGoodies é coluna,linha
		panelBackGound.setLayout(new FormLayout(
		//aqui são as colunas, no caso são 3. 
		//Mas coloquei os objetos na coluna do centro.
		//as outras usei pra espaçar da borda.
				"2dlu, center:pref, 2dlu",
		//aqui são as linhas, no caso são 9. 
	    //cada item separado por virgula é uma linha
		//o mesmo vale pras colunas.
				"4dlu, pref, 2dlu, " +
	    		"pref, 2dlu," +
	    		"pref, 2dlu," +
	    		"pref, 4dlu,"));
		
		//CellConstraints permite criar grade por cordenadas cartesianas.
		CellConstraints cc = new CellConstraints();
		
		//seta o layout corretamente conforme posições.
		//nesse casso esta sendo adicionado no painel panelBackGound
		//na coluna 2, linha 2
		panelBackGound.add(new JLabel("Teste JGoodies"),    cc.xy(2, 2));
		
		//aqui coluna 2 linha 4
		panelBackGound.add(panel,                            cc.xy(2, 4));
		
		//aqui coluna 2 linha 6 sempre pulando uma linha para dar espaço
		//entre os objetos.
		panelBackGound.add(new JLabel("Datasul Tecnologia"), cc.xy(2, 6));
		
        //aqui coluna 2 linha 8
		panelBackGound.add(new JLabel("Powered by lex-dmm"),     cc.xy(2, 8));
		
		//seta uma cor RGB ridícula no painel.Mude a cor alterando os números.
		panelBackGound.setBackground(new Color(010,18,192));
		
		//joga tudo pro container da Frame.
		cont.add(panelBackGound);
	}
	
	public static void main(String[] args) {
		TesteJGoodies testeJGoodies = new TesteJGoodies();		
		testeJGoodies.show(); //torna visível.
		testeJGoodies.pack(); //deixa do tamanho dos objetos.
	}
}

4 Respostas

Ricardo_Neves

Cara essa versaum do forms q vc baixou eh full neh ??? Pq eu baxei a emo e as libaries e eles naum tem essas duas classe do forms,

CellConstraints;
FormLayout;

nenhuma das duas, so tem as de test e elas naum funcionam com sua interface de teste

so tem essas duas q sao mais parecidas mais msm assim naum funcam

import forms.com.jgoodies.forms.layout.CellConstraintsTest;

 import forms.com.jgoodies.forms.layout.FormLayoutTest;

eh full msm essas outras ???

Lex-dmm

Cara, não lembro. Lembro que baixei os pacotes, catei os .jar e pronto. Isso tudo busquei no proprio site do JGoodies. Amanhã cedo verifico com mais calma e te dou uma resposta melhor.

Ricardo_Neves

Blz intaum, ve la fazenu favor q to tentanu mudar minha interface tb pra lago mais moderno, valeu cara

Lex-dmm
Descobri o que foi, baixa o Forms do link abaixo.
http://www.jgoodies.com/downloads/libraries.html
Editei tb o link de antes. O link que eu passei antes era uma versão que não sei do que se trata. Mas essa funciona. Testei.

Segue tb uns exemplos de look and feel

//Primeiro exemplo.
                 try {
			UIManager.setLookAndFeel("com.jgoodies.plaf.plastic.Plastic3DLookAndFeel");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (UnsupportedLookAndFeelException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		Plastic3DLookAndFeel.setHighContrastFocusColorsEnabled(true);
		
		/* Outro exemplo de Look and Feel.
		try {
			UIManager.setLookAndFeel("com.jgoodies.plaf.plastic.PlasticXPLookAndFeel");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (UnsupportedLookAndFeelException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		PlasticXPLookAndFeel.setHighContrastFocusColorsEnabled(true);
		*/

Deve ser usado ou o primeiro ou o segundo exemplo. Será notória a diferença se acrescentar uns botões no código anterior ou uns RadioButton.

Criado 2 de agosto de 2005
Ultima resposta 3 de ago. de 2005
Respostas 4
Participantes 2