[Ajuda] Como configurar o tamanho dos componentes. Ex. JLabel, JTextField

Prezados, boa noite.
Como faço para configurar o tamanho dos componentes do Swing =/
Tipo, parece que o gerenciador de Layout não me permite mudar o tamanho das coisas…

Por exemplo, no código abaixo. retorna os TextField que ocupam a tela toda de largura e com umas 5 linhas de comprimento…Eu gostaria de deixa-los com apenas uma linha e com ums 3 centimetros de largura.
E os Labeis, eu gostaria de tentar organiza-los para ficar com o texto no centro do programa ao invez do lado esquerdo…

Alguem pode me dar uma ajudinha, me explicando como aprender a organizar os componentes? =/

Obrigado,
Um ótimo final de semana a todos.

[code]package classes;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

public class tela {
JFrame tela;
JButton cadastrar;

JPanel painel;
JPanel textos;


JTextField codigo;
JTextField animal;
JTextField nome;
JTextField raca;
JTextField dono;

JLabel PetSHOP;
JLabel lCodigo;
JLabel lAnimal;
JLabel lNome;
JLabel lRaca;
JLabel lDono;

public tela(){
tela = new JFrame();
tela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
tela.setSize(600,600);
tela.setVisible(true);

   cadastrar = new JButton("Cadastrar");
   
   
   textos = new JPanel();
   textos.setLayout(new BoxLayout(textos, BoxLayout.Y_AXIS));
   
    lCodigo = new JLabel("Codigo do animal");
    lAnimal = new JLabel("Cachorro, coelho ou Girafa?     (Obs: Digite exatamente o que escolher)");
    lNome = new JLabel("Nome do Animal");
    lRaca = new JLabel("Raca do Animal");
    lDono = new JLabel("Dono do Animal");
    
    
    
    codigo = new JTextField();
    animal = new JTextField();
    nome = new JTextField();
    raca = new JTextField();
    dono = new JTextField();
   
   textos.add(codigo);
   textos.add(lCodigo);
   
   textos.add(animal);
   textos.add(lAnimal);
   
   textos.add(nome);
   textos.add(lNome);
   
   textos.add(raca);
   textos.add(lRaca);
   
   textos.add(dono);
   textos.add(lDono);
   
   
   painel = new JPanel();
   painel.add(cadastrar);
   
   PetSHOP = new JLabel("-- PETSHOP --   Todos Direitos Reservados.\n\n ");
   tela.getContentPane().add(BorderLayout.SOUTH,painel);
   tela.getContentPane().add(BorderLayout.CENTER,textos);
   tela.getContentPane().add(BorderLayout.NORTH,PetSHOP);

}

}[/code]

[code]package classes;

import java.sql.Connection;

public class principal {
public static void main(String[] args){

   tela programa = new tela();

}
}
[/code]

InsaneChess isso pode ser feito usando a classe http://download.oracle.com/javase/1.4.2/docs/api/java/awt/GridLayout.html ela te permite dispor seus componentes do jeito que vc achar melhor. Agora, pra melhorar a coisa, se vc estiver usando o eclipse, ele tem o plugin VisualEditor o que lhe da muito mais recursos. Qq coisa posta aí que te esclareço mais. Abraço e bom trabalho!

Geralmente uso o GridBagLayout e consigo um bom controle em questão de configurar tamanho e posição de componentes.

Se você está fazendo as telas “na mão”, o MigLayout é uma boa opção.

[EDIT]Esquece a parte que falei dos paineis. Agora que percebi que você já está usando.

Falou…

Um pouco trabalhoso no início mas totalmente liberal no que se refere ao tamanho e disposição dos componentes

SpringLayout

Também recomendo o MigLayout.

Se não quiser instalar um gerenciador externo, você precisa usar uma combinação de gerenciadores. Eu geralmente uso o GridBagLayout, FlowLayout e BorderLayout.
O GridBag é certamente mais poderoso e flexível de todos. O Border é util para definir áreas em sua tela. E o flow para botõezinhos no canto inferior da tela, como salvar e fechar.