Organização visual

Olá pessoal, boa noite a todos.
Peço a ajuda de vcs, se tem algum bom cite sobre a organização visual do projeto. Não sobre os layouts (já sei sobre eles, ou talvez não saiba o bastante). Bem toda dica é bem vinda.
O meu problema é o seguinte.

Como podem ver, os componentes estão muito espalhados.
Pois ao definir o layout como BorderLayout ele meio que estica os componentes em toda a tela.
Tem como eu evitar isso? Fazer com que ocupe somente o espaço necessário?

Usando o border layout é complicado, já que ele é bem simples mesmo e pra forms ele num é recomendado, tenta outro mais sofisticado como box layout ou mesmo grid layout.

Mas os componentes estão no GridLayout, porem o border está esticando eles.

Tente usar flow layout no lugar do border layout então. Se ainda não funcionar, poste o código.

Use o MigLayout em vez de brigar com os layouts padrão do Java.

O WindowBuilder (plugin do Eclipse) tem suporte nativo ao MigLayout.

É uma boa dica, mas me sinto menos desenvolvedor quando apelo pra IDE. (nada contra mesmo)
Tipo eu programo em PowerBuilder, lá 90% a IDE faz… Bem facio de organizar as coisas…

Já está num flow, o gride está dentro de um painel com o flow, e este está no centro do border.

Segue o codigo.

[code]package Paineis;

import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.text.ParseException;
import javax.swing.BorderFactory;
import javax.swing.JComboBox;
import javax.swing.JFormattedTextField;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.text.MaskFormatter;
import SQLPackage.SQLConection;

@SuppressWarnings(“serial”)
public class painelCentralAcessorios extends JPanel {

private JLabel tipo;
private JLabel labelAto;
private JLabel labelMatricula;
private JLabel labelData;
private JLabel labelProtocolo;
private JTextField textAto;
private JTextField textMatri;
private JTextField textProtoco;

private JComboBox<String> comboTipo;

public painelCentralAcessorios() throws SQLException, ParseException{
	setLayout(new FlowLayout());
	setBorder(BorderFactory.createTitledBorder(null, "<html><b>Dados Principais</b><html>"));
	JPanel painel = new JPanel();
	painel.setLayout(new GridLayout(5, 2));
	
	tipo = new JLabel("Tipo:");
	painel.add(tipo);
	
	comboTipo = new JComboBox<>();
	SQLConection.SQLRetornarDados(comboTipo);
	comboTipo.addActionListener(new ActionListener() {
		
		@Override
		public void actionPerformed(ActionEvent arg0) {
			
			String s = (String) comboTipo.getSelectedItem();
		
				System.out.println(s);
		}
	});
	painel.add(comboTipo);
	
	labelAto = new JLabel("Nº do Ato:");
	painel.add(labelAto);
	textAto = new JTextField();
	painel.add(textAto);
	
	labelMatricula = new JLabel("Mátricula:");
	painel.add(labelMatricula);
	MaskFormatter maskMatricula = new MaskFormatter("******");
	maskMatricula.setValidCharacters("0123456789 ");
	textMatri = new JFormattedTextField(maskMatricula);
	painel.add(textMatri);
	
	labelData = new JLabel("Data:");
	painel.add(labelData);
	MaskFormatter maskData = new MaskFormatter("##/##/####");
	maskData.setPlaceholderCharacter('_');
	JTextField textData = new JFormattedTextField(maskData);
	painel.add(textData);
	
	labelProtocolo = new JLabel("Protocolo:");
	painel.add(labelProtocolo);
	textProtoco = new JTextField();
	painel.add(textProtoco);
	
	add(painel);
	
}

}
[/code]

Alguém por favor?

Estude um pouco sobre GroupLayout, ele pode parecer complicado logo de cara, mas ele se encaixou perfeitamente no quesito organização pelo menos para mim.
Nota: Faço tudo no código, não utilizo ferramentas gráficas para um auxilio na organização.

Valeu pela dica vou dar uma estudada. :slight_smile:

Isso se chama “síndrome de macho”. Será que alguém é mais ou menos macho quando usa uma IDE para ajudar a fazer as coisas chatas (como fazer layout de telas)?

Prefiro me concentrar em escrever algoritmos decentes para o processamento, em vez de ficar contando pixels na tela.

Na verdade não, eu estou programando a pouco tempo. Então prefiro aprender mesmo.
Como disse não tenho nada contra, uso o Eclipise pra me ajudar a compilar e a lembrar nomes.
E como já disse também, é uma preferencia minha.

Ziru?? tudo bem!!

Olha meu caro colega do guj eu recomendo que use o miglayout, como já referido pelos colegas acima.
uma vez que a sua preferencia é fazer o codigo gui na mão sugiro que estude ele e tera bons resultados
eu tbm não gosto muito de usar IDE(não digo que iniciante não possa usar) agora que estou a estudar.

abs!!!

note: alternativa o GridBagLayout tbm é bom

Certo, obrigado pela dica de todos. Certamente foram valiosas.