Ajuda com Layout

Fala galera, blz?

Estou precisando fazer um layout, parecido com o da imagem anexa.

Sou programador Java um bom tempo, mas Swing não é minha area, pelo menos não esse :wink: rs

Se alguém puder ajudar, estou tentando fazer da maneira mais automatica possível que no meu ponto de vista seria utilizando os LayoutManagers BorderLayout, FlowLayout e GriLayout mas não consigo sair do lugar.

Quero evitar a configuração especifica dos components como definir o lugar via distâncias das margens, endereços etc.

Tenho uma tela assim HTML feita com CSS, e queria deixar a do software StandAlone o mais parecido possível.


Abs,

Bruno Tafarelo


Minha dica é a seguinte…

Sete o layout do seu contentPane com o BorderLayout.

Coloque um panel ao norte , um no sul e outro no centro.

Em cada panel vc trabalha com o melhor layout para seu interesse.

O segredo é utilizar vários panels para construir a tela, assim vc consegue montar uma tela mais “complexa” de maneira mais fácil.

Cara,

Obrigado pela resposta, mas então essa é a linha que estou sequindo mesmo mas o meu problema é com o “alinhamento” dos componentes, por exemplo:

Na parte superior eu quero colocar um texto do lado esquerdo, uma frase mais embaixo e uma imagem do lado direito, mas eles ficam alinhados no centro e não entendi ainda como fazer pra mandar a frase pra linha de baixo.

Com certeza se eu obter essa resposta, de resto da pra levar.

É o entendimento básico mesmo, nunca precisei e nem tive enteresse no Swing.


Abs,

Bruno Tafarelo

Acho legal vc utilizar o gridbaglayout…

http://www.javafree.org/artigo/5792/Tudo-sobre-o-GridBagLayout.html
http://java.sun.com/docs/books/tutorial/uiswing/layout/gridbag.html

Através de âncoras vc alinha seus componentes … acredito que a melhor forma de vc entender layouts (que é um saco mesmo) é vc ver algum tutorial cara…
Pois ai vc vai vendo visualmente o que está acontecendo… vc vai achar muitos se pesquisar…
Da uma pesquisada, caso tenha dúvida poste suas duvidas, acho que fica mais fácil…

Vc ta fazendo “na unha” ou com editor visual?

Cara,

To fazendo na unha, minha intenção é montar essa tela apartir de um xml.

Os tutorias que acho é só mostrando o básico, estou meio perdidão nisso ai, mas valeu mesmo pela ajuda.

telas como essa nao são tao dificeis porem em puro xml nao sei se ira conseguir…
faz em java mesmo no braço…
usei pouco mas gostei do miglayout
ou senao o gridbaglayout

Cara , aqule primeiro link que te passei fala sobre todas as propriedades do gridbaglayout…
Por mais que seja básico o tutorial, as propriedades são apenas aquelas, basta entender para que serve cada uma …
Vc pode ir testando cada uma e vendo o que acontece…

O gridbaglayout é um pouco parecido (em termos de disposicao dos componentes) com uma tag table no html …

Infelizmente não to sabendo como poderia te ajudar de outra maneira, seria legal se vc tivesse um editor visual, ai ficaria mais fácil de montar sua tela…

Bom Galera, com esse frio aqui em Sampa ta dificil de se concetrar, mas tah saindo… (vejam anexo)

Mas ta muito desproporcional, oque posso fazer mais?

Minha classe é um JPanel e estou iniciando assim só para teste

final JFrame frame = new JFrame();
				frame.setContentPane(new ClienteUi());
				frame.setDefaultCloseOperation(2);
				frame.setTitle("Cadastro de Clientes");
				frame.setSize(800,600);
				frame.pack();
				frame.setVisible(true);

Abaixo o código, dos componentes. Não vou colocar tudo, pois acho que não vai ajudar.

setLayout(new BorderLayout());
		
		JPanel jp1 = new JPanel(new GridLayout(2,2));
		jp1.setBackground(new Color(0,0,0));
		
		jp1.add(jLabel1);
		jp1.add(jLabel2);
		add(jp1, BorderLayout.NORTH);
		
		JPanel jp2 = new JPanel(new BorderLayout());
		jp2.add(masterScrollPane);
		add(jp2, BorderLayout.CENTER);
		
		JPanel jp3 = new JPanel(new GridLayout(9,2));
		jp3.add(codclienteLabel);
		jp3.add(codclienteField);
		jp3.add(clienteLabel);
		jp3.add(clienteField);
		jp3.add(cpfCnpjLabel);
		jp3.add(cpfCnpjField);
		jp3.add(enderecoLabel);
		jp3.add(enderecoField);
		jp3.add(complementoLabel);
		jp3.add(complementoField);
		jp3.add(bairroLabel);
		jp3.add(bairroField);
		jp3.add(cidadeLabel);
		jp3.add(cidadeField);
		jp3.add(cepLabel);
		jp3.add(cepField);
		jp3.add(estadoLabel);
		jp3.add(estadoField);
		add(jp3, BorderLayout.SOUTH);


Abs,

Bruno Tafarelo


Cara o problema do GridLayout é que todas as células terão o mesmo tamanho … por isso que seus labels estão bem longe do textfields…
Eu ainda acho que vc deveria utilizar o GridBagLayout
Fiz um exemplo com GridBagLayout … postei a imagem de modo que vc possa ver as colunas e como ficam os componentes dispostos nelas.

Segue o código de exemplo do formulário com o GridBagLayout

private JPanel getJContentPane() {
		if (jContentPane == null) {
			GridBagConstraints gridBagConstraints61 = new GridBagConstraints();
			gridBagConstraints61.fill = GridBagConstraints.NONE;
			gridBagConstraints61.gridy = 8;
			gridBagConstraints61.weightx = 0.0;
			gridBagConstraints61.anchor = GridBagConstraints.NORTHWEST;
			gridBagConstraints61.insets = new Insets(8, 5, 0, 0);
			gridBagConstraints61.weighty = 1.0;
			gridBagConstraints61.gridx = 1;
			GridBagConstraints gridBagConstraints51 = new GridBagConstraints();
			gridBagConstraints51.fill = GridBagConstraints.HORIZONTAL;
			gridBagConstraints51.gridy = 7;
			gridBagConstraints51.weightx = 0.0;
			gridBagConstraints51.anchor = GridBagConstraints.WEST;
			gridBagConstraints51.insets = new Insets(8, 5, 0, 0);
			gridBagConstraints51.weighty = 0.0;
			gridBagConstraints51.gridx = 1;
			GridBagConstraints gridBagConstraints41 = new GridBagConstraints();
			gridBagConstraints41.fill = GridBagConstraints.BOTH;
			gridBagConstraints41.gridy = 6;
			gridBagConstraints41.weightx = 0.0;
			gridBagConstraints41.gridwidth = 2;
			gridBagConstraints41.insets = new Insets(8, 5, 0, 0);
			gridBagConstraints41.weighty = 0.0;
			gridBagConstraints41.gridx = 1;
			GridBagConstraints gridBagConstraints31 = new GridBagConstraints();
			gridBagConstraints31.fill = GridBagConstraints.HORIZONTAL;
			gridBagConstraints31.gridy = 5;
			gridBagConstraints31.weightx = 0.0;
			gridBagConstraints31.insets = new Insets(8, 5, 0, 0);
			gridBagConstraints31.anchor = GridBagConstraints.WEST;
			gridBagConstraints31.gridwidth = 2;
			gridBagConstraints31.weighty = 0.0;
			gridBagConstraints31.gridx = 1;
			GridBagConstraints gridBagConstraints21 = new GridBagConstraints();
			gridBagConstraints21.fill = GridBagConstraints.HORIZONTAL;
			gridBagConstraints21.gridy = 3;
			gridBagConstraints21.weightx = 1.0;
			gridBagConstraints21.insets = new Insets(8, 5, 0, 5);
			gridBagConstraints21.gridwidth = 3;
			gridBagConstraints21.weighty = 0.0;
			gridBagConstraints21.gridx = 1;
			GridBagConstraints gridBagConstraints14 = new GridBagConstraints();
			gridBagConstraints14.fill = GridBagConstraints.HORIZONTAL;
			gridBagConstraints14.gridy = 4;
			gridBagConstraints14.weightx = 1.0;
			gridBagConstraints14.insets = new Insets(8, 5, 0, 5);
			gridBagConstraints14.anchor = GridBagConstraints.WEST;
			gridBagConstraints14.weighty = 0.0;
			gridBagConstraints14.gridx = 3;
			GridBagConstraints gridBagConstraints13 = new GridBagConstraints();
			gridBagConstraints13.gridx = 2;
			gridBagConstraints13.insets = new Insets(8, 5, 0, 0);
			gridBagConstraints13.weighty = 0.0;
			gridBagConstraints13.gridy = 4;
			jLabelComplemento = new JLabel();
			jLabelComplemento.setText("Complemento");
			GridBagConstraints gridBagConstraints12 = new GridBagConstraints();
			gridBagConstraints12.fill = GridBagConstraints.NONE;
			gridBagConstraints12.gridy = 4;
			gridBagConstraints12.weightx = 0.0;
			gridBagConstraints12.anchor = GridBagConstraints.WEST;
			gridBagConstraints12.insets = new Insets(8, 5, 0, 0);
			gridBagConstraints12.weighty = 0.0;
			gridBagConstraints12.gridx = 1;
			GridBagConstraints gridBagConstraints11 = new GridBagConstraints();
			gridBagConstraints11.fill = GridBagConstraints.NONE;
			gridBagConstraints11.gridy = 2;
			gridBagConstraints11.weightx = 0.0;
			gridBagConstraints11.anchor = GridBagConstraints.WEST;
			gridBagConstraints11.insets = new Insets(8, 5, 0, 0);
			gridBagConstraints11.weighty = 0.0;
			gridBagConstraints11.gridx = 1;
			GridBagConstraints gridBagConstraints10 = new GridBagConstraints();
			gridBagConstraints10.fill = GridBagConstraints.HORIZONTAL;
			gridBagConstraints10.gridy = 1;
			gridBagConstraints10.weightx = 0.0;
			gridBagConstraints10.gridwidth = 3;
			gridBagConstraints10.insets = new Insets(8, 5, 0, 5);
			gridBagConstraints10.weighty = 0.0;
			gridBagConstraints10.gridx = 1;
			GridBagConstraints gridBagConstraints9 = new GridBagConstraints();
			gridBagConstraints9.fill = GridBagConstraints.NONE;
			gridBagConstraints9.gridy = 0;
			gridBagConstraints9.weightx = 0.0;
			gridBagConstraints9.insets = new Insets(15, 5, 0, 0);
			gridBagConstraints9.anchor = GridBagConstraints.WEST;
			gridBagConstraints9.gridx = 1;
			GridBagConstraints gridBagConstraints8 = new GridBagConstraints();
			gridBagConstraints8.gridx = 0;
			gridBagConstraints8.anchor = GridBagConstraints.NORTHEAST;
			gridBagConstraints8.insets = new Insets(8, 5, 0, 0);
			gridBagConstraints8.weighty = 0.0;
			gridBagConstraints8.gridy = 8;
			jLabelEstado = new JLabel();
			jLabelEstado.setText("Estado");
			GridBagConstraints gridBagConstraints7 = new GridBagConstraints();
			gridBagConstraints7.gridx = 0;
			gridBagConstraints7.anchor = GridBagConstraints.EAST;
			gridBagConstraints7.insets = new Insets(8, 5, 0, 0);
			gridBagConstraints7.weighty = 0.0;
			gridBagConstraints7.gridy = 7;
			jLabelCep = new JLabel();
			jLabelCep.setText("CEP");
			GridBagConstraints gridBagConstraints6 = new GridBagConstraints();
			gridBagConstraints6.gridx = 0;
			gridBagConstraints6.anchor = GridBagConstraints.EAST;
			gridBagConstraints6.insets = new Insets(8, 5, 0, 0);
			gridBagConstraints6.weighty = 0.0;
			gridBagConstraints6.gridy = 6;
			jLabelCidade = new JLabel();
			jLabelCidade.setText("Cidade");
			GridBagConstraints gridBagConstraints5 = new GridBagConstraints();
			gridBagConstraints5.gridx = 0;
			gridBagConstraints5.anchor = GridBagConstraints.EAST;
			gridBagConstraints5.insets = new Insets(8, 5, 0, 0);
			gridBagConstraints5.weighty = 0.0;
			gridBagConstraints5.gridy = 5;
			jLabelBairro = new JLabel();
			jLabelBairro.setText("Bairro");
			GridBagConstraints gridBagConstraints4 = new GridBagConstraints();
			gridBagConstraints4.gridx = 0;
			gridBagConstraints4.anchor = GridBagConstraints.EAST;
			gridBagConstraints4.insets = new Insets(8, 5, 0, 0);
			gridBagConstraints4.weighty = 0.0;
			gridBagConstraints4.gridy = 4;
			jLabelNum = new JLabel();
			jLabelNum.setText("Número");
			GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
			gridBagConstraints3.gridx = 0;
			gridBagConstraints3.anchor = GridBagConstraints.EAST;
			gridBagConstraints3.insets = new Insets(8, 5, 0, 0);
			gridBagConstraints3.weighty = 0.0;
			gridBagConstraints3.gridy = 3;
			jLabelEndereco = new JLabel();
			jLabelEndereco.setText("Endereço");
			GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
			gridBagConstraints2.gridx = 0;
			gridBagConstraints2.anchor = GridBagConstraints.EAST;
			gridBagConstraints2.insets = new Insets(8, 5, 0, 0);
			gridBagConstraints2.weighty = 0.0;
			gridBagConstraints2.gridy = 2;
			jLabelCPF = new JLabel();
			jLabelCPF.setText("CPF/CNPJ");
			GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
			gridBagConstraints1.gridx = 0;
			gridBagConstraints1.anchor = GridBagConstraints.EAST;
			gridBagConstraints1.insets = new Insets(8, 5, 0, 0);
			gridBagConstraints1.weighty = 0.0;
			gridBagConstraints1.gridy = 1;
			jLabelCliente = new JLabel();
			jLabelCliente.setText("Cliente");
			GridBagConstraints gridBagConstraints = new GridBagConstraints();
			gridBagConstraints.gridx = 0;
			gridBagConstraints.anchor = GridBagConstraints.EAST;
			gridBagConstraints.insets = new Insets(15, 5, 0, 0);
			gridBagConstraints.gridy = 0;
			jLabelCOdigo = new JLabel();
			jLabelCOdigo.setText("Codigo");
			jContentPane = new JPanel();
			jContentPane.setLayout(new GridBagLayout());
			jContentPane.add(jLabelCOdigo, gridBagConstraints);
			jContentPane.add(jLabelCliente, gridBagConstraints1);
			jContentPane.add(jLabelCPF, gridBagConstraints2);
			jContentPane.add(jLabelEndereco, gridBagConstraints3);
			jContentPane.add(jLabelNum, gridBagConstraints4);
			jContentPane.add(jLabelBairro, gridBagConstraints5);
			jContentPane.add(jLabelCidade, gridBagConstraints6);
			jContentPane.add(jLabelCep, gridBagConstraints7);
			jContentPane.add(jLabelEstado, gridBagConstraints8);
			jContentPane.add(getJTextFieldCodigo(), gridBagConstraints9);
			jContentPane.add(getJTextFieldCliente(), gridBagConstraints10);
			jContentPane.add(getJTextFieldCpf(), gridBagConstraints11);
			jContentPane.add(getJTextFieldNum(), gridBagConstraints12);
			jContentPane.add(jLabelComplemento, gridBagConstraints13);
			jContentPane.add(getJTextFieldComp(), gridBagConstraints14);
			jContentPane.add(getJTextFieldEndereco(), gridBagConstraints21);
			jContentPane.add(getJTextFieldBairro(), gridBagConstraints31);
			jContentPane.add(getJTextFieldCidade(), gridBagConstraints41);
			jContentPane.add(getJTextFieldCep(), gridBagConstraints51);
			jContentPane.add(getJTextFieldEstado(), gridBagConstraints61);
		}
		return jContentPane;
	}


Ressucitando o tópico!

Bom, comecei agora no Java, mas já pesquisei pra caramba sobre Layout, inclusive aqui! Já lí tudo naquele link “Tudo sobre GridBagLayout”, mas não consigo implementar de forma que saia corretamente.

Lá é organizado com linhas, porém quero jogar dentro de um panel com borda e não consigo… fica tudo na mesma linha e dá erro.

Tentei de uma outra forma encontrada aqui no fórum, mas os componentes não “descem” de linha também.

Se alguém puder dar umas dicas, ficarei grato! Só não postei o print de como quero montar porque não sei como funciona a postagem de imagens no fórum, entrei hoje.

Valeu!