Problemas nesse formulario

8 respostas
N

Ae pessoal é a primeira vez que uso esse formulario e espero que possam me ajudar, estou aprendendo java sozinho na raça, e estou montando um pequeno formulario, agora que consegui montar depois de muito custo estou com problemas para alinhar os campos do formularios e os botoes, ja fiz de tudo, mudei o tamanho dos campos do textfield, ja mudei o tamanho da janela no setsize, mas sempre o resultado final fica ruim, quando consigo alguma coisa proximo do que quero quando maximizo a janela estraga tudo, quero saber se tem algum comando ou como faço para deixar tudo alinhado os jlabel e os textfield cada um em uma linha, e alinhar os botoes, vou colocar meu codigo fonte aqui em baixo para vcs rodarem e olharem o problema.


import java.awt.<em>;

import java.awt.event.</em>;

import javax.swing.*;

public class Formulario extends JFrame {

private JTextField codigo1, nome1, endereco1, bairro1, cidade1, estado1, cep1, telefone1, email1;

public JLabel codigo2, nome2, endereco2, bairro2, cidade2, estado2, cep2, telefone2, email2;

private JButton cadastrar, alterar, localizar, remover, retornar;

public Formulario()
  {
     super( "Clientes");

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

     codigo2 = new JLabel ("Codigo:");
     c.add( codigo2 );
     codigo1 = new JTextField( 20 );
     c.add( codigo1 );


     nome2 = new JLabel ("Nome:");
     c.add( nome2 );
     nome1 = new JTextField( 20 );
     c.add( nome1 );


     endereco2 = new JLabel ("Endereco::");
     c.add( endereco2 );
     endereco1 = new JTextField( 20 );
     c.add( endereco1 );


     bairro2 = new JLabel ("Bairro:");
     c.add( bairro2 );
     bairro1 = new JTextField( 20 );
     c.add( bairro1 );


     cidade2 = new JLabel ("Cidade:");
     c.add( cidade2 );
     cidade1 = new JTextField( 20 );
     c.add( cidade1 );


     estado2 = new JLabel ("Estado:");
     c.add( estado2 );
     estado1 = new JTextField(20);
     c.add( estado1 );

     cep2 = new JLabel ("Cep:");
     c.add( cep2 );
     cep1 = new JTextField( 20 );
     c.add( cep1 );

     telefone2 = new JLabel ("Telefone:");
     c.add( telefone2 );
     telefone1 = new JTextField( 20 );
     c.add( telefone1 );


     email2 = new JLabel ("Email:");
     c.add( email2 );
     email1 = new JTextField( 20 );
     c.add( email1 );

     cadastrar = new JButton( "Cadastrar" );
     c.add( cadastrar );

     alterar = new JButton( "Alterar" );
     c.add( alterar );

     localizar = new JButton( "Localizar" );
     c.add( localizar );

     remover = new JButton( "Remover" );
     c.add( remover );

     retornar = new JButton( "Retornar" );
     c.add( retornar);

     setSize( 500,500);
     show();
  }

  public static void main( String args[] )
  {
     Formulario app = new Formulario();

     app.addWindowListener(
                             new WindowAdapter() {
                                public void windowClosing( WindowEvent e )
                                {
                                   System.exit( 0 );
                                }
                             }
                          );
  }

}

8 Respostas

aconstantino

Olá nandotjs :slight_smile:

Seu problema é o FlowLayout… Você teria que utilizar o GridBagLayout que a primeira vista parece ser muito complicado mas é muito simples…
Ou então criar um monte de JPanel ( o que seria uma gambiarra )

Espero ter ajudado
T+

Guilherme_Silveira

gambiarra = beeeeeeeeeeeeeeeeeeeeeeeeed (com acento no e) programming

Adler_Medrado

DEUS SEJA LOUVADO!

Eu costumo usar o layout como null.

Assim a disposicao da tela fica do jeito que eu definir.

Eu conheco um programinha feito em java que eh muito bom… o nome dele eh cafeteira e ele so serve para auxiliar na criação de janelas padrao swing.

O url para download eh: www.mycgiserver.com/~fernans
Aí clica no link Cafeteira

[]s

Adler Medrado

Guilherme_Silveira

nao usar layout manager eh ruim
em ambientes diferentes o seu programa pode ficar bonito ou feio e vc nao tera como mudar isso

guilherme

Adler_Medrado

DEUS SEJA LOUVADO!

Eu nunca ouvi nada sobre isso, por isso para mim o null era o melhor.
Voce poderia citar alguns exemplos do que poderia acontecer?

Cordialmente,

Adler Medrado

O REI ESTÁ VOLTANDO. VOCÊS ESTÃO PREPARADOS?

luiz_ross

Gente eu usei o método Insets para obter as coordenadas exatas do
JFrame e posicionar cada objeto onde eu queria. Será que a maneira que eu fiz é uma maneira boa de resolver este problema de alinhamento
pois sou iniciante tambem? Essa pelo menos foi a melhor maneira que eu achei para resolver este problema que por sinal eu tambem tive, pois usava o GridBagLayout e este não sanou os problemas que eu tinha com alinhamento, e para não fazer gambiarra com o JPanel preferi fazer desta maneira. Abaixo segue o código

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

public class teste extends JFrame{
	public JButton salvar, 
	    	       excluir,
	    	       cancelar;
	public JLabel cod_loja,
		      sigla,	
	              nome,
	              end,
	              bairro,
	              cidade,
	              estado,
	              cep,
	              fone_ddd,
	              fone,
	              cnpj,
	              i_e;
	              
	public JTextField cod_loja1,
			  sigla1,
			  nome1,
			  end1,
	              	  bairro1,
	             	  cidade1,
	             	  cep1,
	             	  fone_ddd1,
	             	  fone_ddd2,
	             	  fone1,
	             	  cnpj1,
	             	  i_e1;
	public JComboBox estado1;
	public String ufs[] = {"AC","AL","AM","AP","BA","CE","DF","ES","GO","MA","MG",
    "MS","MT","PA","PB","PE","PI","PR","RJ","RN","RO","RR","RS","SC","SP","SE","TO"};
	
	public teste()
	{
		//super("Teste");
		
		Container c = getContentPane();
		c.setLayout(null);
		
		cod_loja = new JLabel("Código loja:");
		c.add(cod_loja);
		cod_loja1 = new JTextField();
		c.add(cod_loja1);
		sigla = new JLabel("Sigla:");
		c.add(sigla);
		sigla1 = new JTextField();
		c.add(sigla1);
		nome = new JLabel("Nome:");
        c.add(nome);
        nome1 = new JTextField();
        c.add(nome1);
        end = new JLabel("Endereço:");
        c.add(end);
        end1 = new JTextField();
        c.add(end1);
        bairro = new JLabel("Bairro:");
        c.add(bairro);
        bairro1 = new JTextField();
        c.add(bairro1);
        estado = new JLabel("Estado:");
        c.add(estado);
        estado1 = new JComboBox(ufs);
        estado1.setMaximumRowCount( 6 );
        estado1.setEditable(true);
        c.add(estado1);
        cep = new JLabel("CEP:");
        c.add(cep);
        cep1 = new JTextField();
        c.add(cep1);
        fone_ddd = new JLabel("Fone DDD:");
        c.add(fone_ddd);
        fone_ddd1 = new JTextField();
        c.add(fone_ddd1);
        fone_ddd2 = new JTextField();
        c.add(fone_ddd2);
        fone = new JLabel("Fone:");
        c.add(fone);
        fone1 = new JTextField();
        c.add(fone1);
        cnpj = new JLabel("CNPJ:");
        c.add(cnpj);
        cnpj1 = new JTextField();
        c.add(cnpj1);
        i_e = new JLabel("IE:");
        c.add(i_e);
        i_e1 = new JTextField();
        c.add(i_e1);
        salvar = new JButton("Salvar");
        c.add(salvar);
        excluir = new JButton("Excluir");
        c.add(excluir);
        cancelar = new JButton("Cancelar");
        c.add(cancelar);
        
        Insets insets = c.getInsets();
        cod_loja.setBounds(25 + insets.left, 25 + insets.top, 75, 20);
        cod_loja1.setBounds(92 + insets.left, 25 + insets.top, 75, 20);
        sigla.setBounds(170 + insets.left, 25 + insets.top, 75, 20);
        sigla1.setBounds(205 + insets.left, 25 + insets.top, 75, 20);
        nome.setBounds(25 + insets.left, 50+ insets.top, 75, 20);
        nome1.setBounds(65 + insets.left, 50+ insets.top, 250, 20);
        end.setBounds(25 + insets.left,  75 + insets.top, 75, 20);
        end1.setBounds(85 + insets.left, 75 + insets.top, 230, 20);
        bairro.setBounds(25 + insets.left, 100 + insets.top, 75, 20);
        bairro1.setBounds(65 + insets.left, 100 + insets.top, 102, 20);
        estado.setBounds(170 + insets.left, 100+ insets.top, 75, 20);
        estado1.setBounds(217 + insets.left, 100 + insets.top, 98, 20);
        cep.setBounds(25 + insets.left, 125 + insets.top, 75, 20);
        cep1.setBounds(55 + insets.left, 125 + insets.top, 75, 20);
        fone_ddd.setBounds(135 + insets.left, 125 + insets.top, 75, 20);
        fone_ddd1.setBounds(195 + insets.left, 125 + insets.top, 30, 20);
        fone_ddd2.setBounds(225 + insets.left, 125 + insets.top, 90, 20);
        fone.setBounds(25 + insets.left, 150 + insets.top, 75, 20);
        fone1.setBounds(60 + insets.left, 150 + insets.top, 70, 20);
        cnpj.setBounds(135 + insets.left, 150 + insets.top, 75, 20);
        cnpj1.setBounds(172 + insets.left, 150 + insets.top, 70, 20);
        i_e.setBounds(245 + insets.left, 150 + insets.top, 75, 20);
        i_e1.setBounds(260 + insets.left, 150 + insets.top, 55, 20);
        salvar.setBounds(25 + insets.left, 250 + insets.top, 85, 30);
        excluir.setBounds(127 + insets.left, 250 + insets.top, 85, 30);
        cancelar.setBounds(230 + insets.left, 250 + insets.top, 85, 30);
        
    }
    
    
    public static void main(String args[])
    {
    	teste window = new teste();
        Insets insets = window.getInsets();
        window.setTitle("Cadastro de Lojas ");
        window.setSize(360 + insets.left + insets.right,
                       350 + insets.top + insets.bottom);
        window.setVisible(true);
    	
    	teste app = new teste();
    	
    	app.addWindowListener(
    		new WindowAdapter() {
    			public void windowClosing(WindowEvent e)
    			{
    				System.exit(0);
    			}
    		}
    	);
    }
}
N

ae galera, valeu pela atencao de todos, mas como disse na minha questao, sou iniciante, entaou boa parte do que vcs escreveram eu naum entendi nada, se vcs colocarem algum exemplo ficaria mais facil, espero naum estar pedindo muito, mesmo assim agradeço a todos que responderam.

Adler_Medrado

DEUS SEJA LOUVADO!

Eu uso o método setBounds que faz com que os objetos fiquem aonde eu definir. Eu já testei aplicativos assim em linux e windows e pedi pra um colega testar no solaris e tudo ficou perfeito.

[]s

Adler Medrado[/quote]

Criado 27 de setembro de 2002
Ultima resposta 29 de out. de 2002
Respostas 8
Participantes 5