Problema de manipulação de componentes com GridBagLayout

1 resposta
peaga

Boa Tarde pessoal,

antes que o pessoal mande eu procurar no search do forum, google, artigos e afins, eu ja busquei porem não achei nenhum caso parecido com o meu, e as possíveis soluções infelizmente não funcionaram, então vamos ao caso:

Na minha tela principal do sistema, tem um JTabbedPane, nele há 2 abas, na primeira eu inseri um JPanel dentro como no codigo abaixo:

//Criando as abas do sistema.		
		JTabbedPane tabs = new JTabbedPane(
				JTabbedPane.TOP, JTabbedPane.SCROLL_TAB_LAYOUT );
		tabs.addTab("Monitoramento Dispositivos", panelDispositivosPai.getPanel());
		tabs.addTab("Historico de Monitoramentos", new JPanel());
		add(tabs);

até aqui tudo certo, dentro desse JPanel eu irei inserir outros JPanels "filhos" dele, para organiza-los eu setei o GridBagLayout no JPanel "Pai", e o mesmo eu fiz com os "filhos" para organizar os componentes deles, como no codigo abaixo:

package simelcom.br.view;

import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;


public class PanelDispositivo{

	private GridBagLayout layoutGeral;
	private GridBagConstraints constraintsGeral;

	private GridBagLayout layoutDispositivo;
	private GridBagConstraints constraintsDispositivo;

	private JPanel panelDispositivosPai = new JPanel();
	private JPanel panelDispositivoFilho;
	
	private JLabel nomeDispositivo;
	private JLabel consumoDispositivo;
	private JTextField retornoConsumoDispositivo;
	private JLabel custoDispositivo;
	private JTextField retornoCustoDispositivo;
	private JButton chaveDispositivo;	
	
	public PanelDispositivo()
	{
		layoutGeral = new GridBagLayout();
		constraintsGeral = new GridBagConstraints();
		panelDispositivosPai.setLayout(layoutGeral);
		
		constraintsGeral.fill = GridBagConstraints.BOTH;
		constraintsGeral.insets = new Insets(5,5,5,5);
		addComponent(panelDispositivosPai, constraintsGeral, layoutGeral, novoPanelDispositivo(), 1, 1, 3, 4);
	}
	
	public Component getPanel()
	{
		return panelDispositivosPai;
	}
	
	public  JPanel novoPanelDispositivo()
	{
		GridBagLayout layoutDispositivo = new GridBagLayout();
		GridBagConstraints constraintsDispositivo = new GridBagConstraints();
		
		panelDispositivoFilho = new JPanel();		
		panelDispositivoFilho.setLayout(layoutDispositivo);
		panelDispositivoFilho.setBackground(new Color(912911));

		constraintsDispositivo.fill = GridBagConstraints.HORIZONTAL;
		nomeDispositivo = new JLabel("NOME DISPOSITIVO", SwingConstants.CENTER);
		addComponent(panelDispositivoFilho, constraintsDispositivo, layoutDispositivo, nomeDispositivo, 1, 1, 1, 1);
		
		consumoDispositivo = new JLabel("Consumo:");
		addComponent(panelDispositivoFilho, constraintsDispositivo, layoutDispositivo, consumoDispositivo, 2, 1, 1, 1);
		/*
		retornoConsumoDispositivo = new JTextField("14" + " Kw/h");
		retornoConsumoDispositivo.setEditable(false);
		dispositivoPanel.add(retornoConsumoDispositivo);
		
		custoDispositivo = new JLabel("Custo:");
		dispositivoPanel.add(custoDispositivo);
		
		retornoCustoDispositivo = new JTextField("R$ " + "5,4");
		retornoCustoDispositivo.setEditable(false);
		dispositivoPanel.add(retornoCustoDispositivo);
		
		chaveDispositivo = new JButton("ON");
		chaveDispositivo.setBackground(new Color(1));
		dispositivoPanel.add(chaveDispositivo);*/
		
		return panelDispositivoFilho;
	}
	
	private void addComponent(JPanel panel, GridBagConstraints constraints, GridBagLayout layout, Component component, int row, int column, int width, int height)
	{
		constraints.gridx = column;
		constraints.gridy = row;
		constraints.gridwidth = width;
		constraints.gridheight = height;
		layout.setConstraints( component, constraints);
		panel.add( component );
	}
}

Entao pessoal, o drama é o seguinte: eu não consigo manipular a posição do JPanel filho de jeito nenhum, tentei pelo anchor do constraints, pelo proprio panel, pelo pai, e não consegui mudar ele de lugar, eu acredita que pudesse ser o anchor pois ele fica no Centro, e como o anchor vem com CENTER como padrao, poderia ser isso, mas não consegui mexer ele.
Sou novato com relação a linguagem e o Swing, logo relevem se houverem erros bem feios xP uehuehhue!

Obrigado pela atenção pessoal!

ps.: Quem não conhecer sobre segue um link com um tutorial legal:
http://www.javafree.com.br/javabb/viewtopic.jbb?t=5792

1 Resposta

peaga

up!

poxa tanto cara bom e nenhum para me ajudar, 2 dias ja quebrando a cabeça para arrumar isso!
estranho que cheguei a jogar esse panel dos componentes num frame separado só para ver se o problema era o panel pai, e tb não centralizou, tenho certeza que uma linha de comando resolve meu problema, mas ta dificil de acha-la :confused:

Criado 24 de julho de 2008
Ultima resposta 25 de jul. de 2008
Respostas 1
Participantes 1