Formatar de um JFrame

Fala aeh Pessoal :smiley:

Eu estou com um Problema de formatação, o meu JFrame está com FlowLayout, logo todos os componentes que jogo dentro dele vão aparecendo um do lado do outro, mas eu queria que ele fica-se ordernado, eu só consigo arrumar todo ele usando o GridBagLayout ou existe outra forma…

Qualquer ajuda e bem vindo eheh , abaixo anexo o Código pra caso voces queiram testar

[code]import java.awt.;
import java.awt.event.
;
import javax.swing.*;

public class CodigoBarras extends JFrame implements ActionListener {

private JTextField txtIp, txtPorta ;
public JButton btnComecar ;
public JRadioButton rdbImp, rdbBancoDados;
public ButtonGroup bgGrupoRadio ;
public Container c;
private JLabel lbPergunta, lbPorta, lbIp ;

public CodigoBarras(){
    super("Programa de Impressão");

    c = getContentPane();
    c.setLayout(new FlowLayout());

    bgGrupoRadio =  new ButtonGroup();
    lbPergunta =    new JLabel("Essa maquina é a Impressora ou o Banco de Dados");
    lbIp =          new JLabel("Porta: ");
    lbPorta =       new JLabel("Ip: ");
    rdbImp =        new JRadioButton("Impressora", true);
    rdbBancoDados = new JRadioButton("Banco de Dados", false);
    txtIp =         new JTextField("127.0.0.1");
    txtPorta =      new JTextField("7000");
    btnComecar =    new JButton("Começar");
   
}

public void geraTela(){

    bgGrupoRadio.add(rdbImp);
    bgGrupoRadio.add(rdbBancoDados);
    
    txtIp.setSize(50,20);
    txtPorta.setSize(150,20);
    
    btnComecar.setSize(100,50);
    btnComecar.addActionListener(this);
    
    c.add(lbPergunta);
    c.add(rdbImp);
    c.add(rdbBancoDados);
    c.add(lbIp);
    c.add(txtIp);
    c.add(lbPorta);
    c.add(txtPorta);
    c.add(btnComecar);

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setVisible(true);
    setSize(350,350);
    pack();
}

public static void main(String[] args) {
    
    CodigoBarras nCodB = new CodigoBarras();
    nCodB.geraTela();
}

}[/code]

Sim, vc vai precisar usar um GridBagLayout. Geralmente, é uma pessima ideia, querer formatar usa interface com flowlayout, a aparencia dela vai alterar completamente dependendo das configuraçoes do computador que vc exercutar sua aplicação. Eu particularmente uso só ele dentro de celulas de grigbag ou outro layout. Use Grig bag eh bem facil.

Eu tenho um sério problema com estes gerenciadores de layout… Normalmente prefiro deixar o layout como null mesmo e acertar a posição dos componentes na unha…
Acho que é porque eu não sei usar os layouts managers direito… ahuauha
Mas sempre que coloco o layout como null crio a disposição de componentes da maneira que bem entender, sem complicaões…

Mas nem existe nenhuma ferramenta da SUN que a gente possa usar pra arrumar as distancias arrastando com o Mouse mesmo ? Estilo Delphi e tal… ou a gente precisa fazer na Unha mesmo ?

Opa, da Sun não, mas o NetBeans e o Eclipse, por exemplo, possuem este tipo de ferramenta :slight_smile:

Mas eu não aconselho usar isso enquanto vc não estiver bem familiarizado com o funcionamento do Swing… Se ficar usando isso ai sem aprender como funcionam as classes e tudo mais, vc vai ficar meio “burro”/travado…

Falou!

Na verdade, usar essas ferramentas sem conhecer como funcionam esses layout managers é terrível!

Lembro da primeira vez que usei isso, era só mudando o layout para null, hehehe.

O novo Netbeans vem com um tal de Matisse, não sei se ele usa um outro gerenciador de layouts, mas que fica bico fazer tela, isso fica!

flw