Centralizar objetos em cada célula dum GridLayout

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!

no one? :cry:

top

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.

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 :?:

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.

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:

Olá JhowTroMundo

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

Abraços!!!

huahauhauahuahauhauhauahuah

Te achei!!!

kkkkk

Achou mas não respondeu!!

Deixa queto, ja resolvi mesmo…!

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.