Centralizar objetos em cada célula dum GridLayout

10 respostas
J

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

J

no one? :cry:

J

top

J

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.

I

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

J

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.

E

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:

A

Olá JhowTroMundo

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

Abraços!!!

A

huahauhauahuahauhauhauahuah

Te achei!!!

J

kkkkk

Achou mas não respondeu!!

Deixa queto, ja resolvi mesmo…!

V

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