GridBagLayout

3 respostas
N

Eu estou montando uma tela de cadastros utilizando o GridBagLayout, só que eu não estou conseguindo colocar um pequeno espaço entre as linhas…
As linhas com os JTextFild estão coladas praticamente deixando a imagem um pouco estranha
Obrigado

3 Respostas

U
ve se serve usei Box para separar
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;

import javax.swing.Box;
import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

public class Categoria extends JFrame{
	private static final long serialVersionUID = 1L;
	
	private Container c;
	private JPanel pn_centro;
	
	private JPanel pn_grade;
	private GridBagLayout grid;
	private GridBagConstraints grid_const;
	private JLabel lb_id_categoria;
	private JLabel lb_descricao;
	private JLabel lb_tipo;
	private JLabel lb_cabecalho;
	private JTextField tx_id_categoria;
	private JTextField tx_descricao;
	private ButtonGroup bg_tipo;
	private JRadioButton rb_credito;
	private JRadioButton rb_debito;	
	private Box bx_caixa;
	
	public Categoria(){
		super();
		inicializar();
	}
	public void inicializar(){
		instanciar();
		configurar();
		agrupar();		
		posicionar();		
	}
	/**^^^^^^^^^^^Instancia os objetos^^^^^^^^^^^^^^*/
	public void instanciar(){
		
		c = getContentPane();
		
		pn_centro = new JPanel();
		pn_grade  = new JPanel();
		
		lb_id_categoria = new JLabel("Código da categoria: ",SwingConstants.RIGHT);
		lb_descricao = new JLabel("Descrição da categoria: ",SwingConstants.RIGHT);
		lb_tipo = new JLabel("Tipo: ",SwingConstants.RIGHT);
		lb_cabecalho = new JLabel("Cadastro de Categorias",SwingConstants.CENTER);		
		
		tx_id_categoria = new JTextField(12);
		tx_descricao = new JTextField(30);		
		
		bg_tipo = new ButtonGroup();
		rb_credito  = new JRadioButton("Crédito  ", false);
		rb_credito.setBackground(new Color(229,230,231));	
		rb_debito = new JRadioButton("Débito  ", true);
		rb_debito.setBackground (new Color(229,230,231));
		grid = new GridBagLayout();
		grid_const = new GridBagConstraints();
		bx_caixa = Box.createHorizontalBox();		
	}
	/**Configura cada um dos objetos */
	public void configurar(){		
		lb_cabecalho.setFont(new Font("Monoespaced",Font.BOLD, 30));
		lb_cabecalho.setForeground(Color.DARK_GRAY);		
		tx_id_categoria.setForeground(new Color(224, 7, 149));		
		pn_centro.setBackground(new Color(229,230,231));
		pn_grade.setLayout(new GridLayout(1,2));
		pn_grade.setBackground(new Color(229,230,231));			
		c.setBackground(new Color(229,230,231));	
		
		bx_caixa.add(Box.createRigidArea(new Dimension(5,50)));			
	}
	/**Os objetos são agrupados no frame e dentro de outros objetos*/
	public void agrupar(){
		c.setLayout(new BorderLayout());	
		
		bg_tipo.add(rb_credito);
		bg_tipo.add(rb_debito);
		
		/***** Alinha todos os componentes a direita *****/
		grid_const.anchor = GridBagConstraints.WEST;
		
		pn_grade.add(rb_credito);
		pn_grade.add(rb_debito);
		
		addCompPnCentro(lb_id_categoria,0,0,2,2);			
		addCompPnCentro(tx_id_categoria,0,2,2,2);
		
		addCompPnCentro(bx_caixa,2,0,2,2);
		
		addCompPnCentro(lb_descricao,2,0,2,2);
		addCompPnCentro(tx_descricao,2,2,2,2);
		
		grid_const.anchor = GridBagConstraints.EAST;
		addCompPnCentro(lb_tipo,4,0,2,2);	
		addCompPnCentro(pn_grade,4,2,1,1);
		pn_centro.setLayout(grid);		
		
		c.add("North",lb_cabecalho);
		c.add("Center",pn_centro);
	}
	/**Faz o posicionamento dos objetos na inteface.*/
	public void posicionar(){
		setTitle("Formulário para Manipular a Tabela Categoria");
		setSize(600,250);
		setLocationRelativeTo(null); //Centraliza o formulário
		setVisible(true);
	}
	/********  Método para trabalhar e ativar as restrições  ****** 
	 **************** de GridBagConstraints	nos paineis".  ********/
	private void addCompPnCentro(Component componente,  
		int linha, int coluna, int largura, int altura){
		grid_const.gridx = coluna;
		grid_const.gridy = linha;
		grid_const.gridwidth  = largura;
		grid_const.gridheight = altura; 
		grid.setConstraints(componente, grid_const);
		pn_centro.add(componente); 
	}
	public static void main(String[] args) {
		new Categoria();
	}
}
T

Cara, da uma pesquisada sobre JGoodies Forms.
Garanto que você vai achar muito melhor do que qualquer outro gerenciador de layout.

sergio_ferraz

Confira as propriedades “insets” e “rowHeights”.
Mais informações aqui: http://showbitsness.wordpress.com/2009/02/15/um-pouco-sobre-gridbaglayout/

Criado 15 de fevereiro de 2008
Ultima resposta 16 de fev. de 2009
Respostas 3
Participantes 4