Centralizar objetos em cada célula dum GridLayout

10 respostas
JhowTroMundo

Olá, pessoal.

Tenho um JPanel com GridLayout (1x3) e 3 JRadioButton, um em cada célula.

private JPanel getPanelUm(){
		if(!isReferencia(panelUm)){
			panelUm = getPainelFactory().novoJPainel();
			panelUm.setBorder(BBJBordaOval.createOvalBorder());
			panelUm.setOpaque(false);
			//panelUm.setLayout(getLayoutFactory().novoGridBagLayout());
			panelUm.setLayout(getLayoutFactory().novoGridLayout(1, 3));
			//GridBagConstraints gc = new GridBagConstraints();
//			gc.gridy=0;
//			gc.gridx=0;			
			panelUm.add(getRadioDARF());
//			gc.gridx++;
			panelUm.add(getRadioGPS());
//			gc.gridx++;
			panelUm.add(getRadioGARE());
		}
		return panelUm;
	}

Dessa forma os radio se alinham à esquerda da célula.
Eu gostaria que os radio ficassem centralizados dentro de suas respectivas células.
Alguém tem ideia?

Obrigado!

10 Respostas

JhowTroMundo

no one? :cry:

JhowTroMundo

top

JhowTroMundo

Bom, como não achei uma solução mais elegante, fiz do jeitinho brasileiro mesmo:

private JPanel getPanelUm() {
		if (!isReferencia(panelUm)) {
			panelUm = getPainelFactory().novoJPainel();
			panelUm.setBorder(BBJBordaOval.createOvalBorder());
			panelUm.setOpaque(false);
			panelUm.setLayout(getLayoutFactory().novoBorderLayout());
			
			JPanel panelDARF = new JPanel();
			panelDARF.setLayout(new BorderLayout());
			panelDARF.setOpaque(false);			
			JPanel panelGPS = new JPanel();
			panelGPS.setLayout(new GridBagLayout());
			panelGPS.setOpaque(false);
			GridBagConstraints panelGPSGC = new GridBagConstraints();
			
			panelDARF.add(getRadioDARF(), BorderLayout.WEST);			
			panelGPSGC.gridx=1;
			panelGPSGC.gridy=0;
			panelGPS.add(getRadioGPS(), panelGPSGC);
			
			panelUm.add(panelDARF, BorderLayout.WEST);
			panelUm.add(panelGPS, BorderLayout.CENTER);
			panelUm.add(getRadioGARE(), BorderLayout.EAST);
		}
		return panelUm;
	}

Não é bonito, mas a visualização ficou exatamente como eu queria.

Ainda aceito sugestões pra melhorar essa gambi ai.

InicianteJavaHenriqu

Porque você não adiciona em cada célula do seu “JPanel com GridLayout (1x3)”, um JPanel com o gerenciador de layout FlowLayout() e assim você adiciona cada um dos seus JRadioButton em um dos JPanel (que está com FlowLayout) ?

Ou então… Se você usar o gerenciador de layout GridBagLayout(1,3) sem GridBagConstraints, ele não adicona centralizado os seus JRadioButton automáticamente :?:

JhowTroMundo

Eu parti exatamente dessa ideia de colocar cada radio num panel diferente, só nao tentei com FlowLayout.

Não, o GridLayout(1, 3) alinha à esquerda (Observe meu primeiro post). Não acho que o GridBagLayout seja usual sem GridBagConstraints.

Eric_Yuzo

GridLayout não alinha os componentes. Ele os redimensiona de acordo com o tamanho da célula. Como o radio button tem fundo transparente, fica a impressão do componente estar alinhado a esquerda, mas na verdade é apenas o texto que está mais a esquerda.

Se usar GridLayout o componente ocupará todo o espaço, o que pode ser feito é ajustar o alinhamento do texto:

AndreSorge

Olá JhowTroMundo

pode perguntar para o cara que trabalha do seu lado, que com certeza ele saberá te responder!!!

Abraços!!!

AndreSorge

huahauhauahuahauhauhauahuah

Te achei!!!

JhowTroMundo

kkkkk

Achou mas não respondeu!!

Deixa queto, ja resolvi mesmo…!

ViniGodoy

Dica… para evitar esse tipo de situação, abra os tópicos de Interface Gráfica no fórum de Interface Gráfica.
Como você viu, “Java Básico” não resolve todos os problemas.

Tópico movido.

Criado 6 de maio de 2011
Ultima resposta 27 de mai. de 2011
Respostas 10
Participantes 5