Erro em passagem de dados entre 2 JFrame

15 respostas
brunorota

Ae galera
Meu problema é o seguinte
Eu tenho 2 JFrames
Eu preciso abrir um JFrame clicando no botão de outro JFrame, passando alguns valores para o outro JFrame

Eu fiz esse código

Esse é o codigo do JFrame q precisa passar os dados pro outro JFrame, o método getCod retorna um inteiro de um JComboBox

if(e.getSource() == btnAcessar){
			
			InspecaoDescricaoGUI i = new InspecaoDescricaoGUI();
			i.setCodEclusa(getCod(comboEclusa.getSelectedItem().toString()));
			i.setTitle("Cadastros");
			i.setVisible(true);
		}

Esse é o código do JFrame q eh instanciado a bartir do evento do outro JFrame

private int codEclusa;

public void setCodEclusa(int codEclusa){
		
		this.codEclusa = codEclusa;
	}
	
	public int getCodEclusa(){
		
		return codEclusa;
	}

O que tem de errado, ele não seta o valor

Não sei c eh o método certo pra passa valores de um JFrame pelo outro, mais eu consegui achar essa lógica, soh q eu nao sei oq tem de errado =/

Se alguem conseguir me ajudar

Agradeço muito

Obrigado

15 Respostas

filipenf

Quanto ao método setCodEclusa não tem nada errado com ele. O que pode estar errado é o método getCod que você chama para converter, coloque um break dentro do setCodEclusa do segundo frame pra verificar que valor está chegando pra ele…

brunorota

Ola

O método getCodigo está certo
Jah testei ele
Retorna um int normal

Os dados de entrada para esse método são exemplo:

1- BRUNO
2- RAFAEL

public int getCod(String s){
		
               // EXEMPLO DO DADO DE ENTRADA s = 1- BRUNO;                

		String [] codString = s.split("-");
		int cod = Integer.parseInt(codString[0]);
		
		System.out.println(cod);
		return cod;
	}

Esse método ta certo retorna o valor normal, o problema ta quando eu chamo, não é um erro, esse setCodEclusa não esta atribuindo o valor pro atributo codEclusa q eu tenho no outro JFrame

E eu não sei o pq não esta dando certo =/

Gabriel_Galhardi

Se o segundo form só vai abrir sempre usando os dados do primeiro, passe no construtor o valor.

brunorota

Ah ta chegando o valor 0 =/

brunorota

Jah tentei passar no construtor tbm, soh q passa o mesmo valor 0 =/

Eu nao sei oq tem de errado =/

Gabriel_Galhardi

jogue o getCod em um int antes da dar o set, e debuga…

brunorota

vou passar a classe completa

public class InspecaoGUI extends JFrame implements MouseListener{

	private static final long serialVersionUID = 1L;
	
	private JPanel container = null;
        private JButton btnAcessar = null;
        private JComboBox = null;

        InspecaoGUI(){
		super();
		initialize();
	}
	
	public void initialize(){
		this.setSize(500,500);
		this.setContentPane(getContainer());
		this.setJMenuBar(getJMenuBar());
		this.loadTable(getCod(comboEclusa.getSelectedItem().toString()), getCodSelected());
	}

        public JPanel getContainer(){
		
		if(container == null){
			
			container = new JPanel();
			container.setLayout(null);

                       btnAcessar = new JButton();
			btnAcessar.setText("Acessar");
			btnAcessar.setBounds(280, 350, 110, 30);
			btnAcessar.addMouseListener(this);
			container.add(btnAcessar);

                        container.add(getComboEclusa());

               }
               return container;
         }

      public static void main(String args[]){
		InspecaoGUI i = new InspecaoGUI();
		i.setTitle("Cadastro de Inspeção");
		i.setVisible(true);
		i.setDefaultCloseOperation(EXIT_ON_CLOSE);
	}

   public JComboBox getComboEclusa(){
		
		if(comboEclusa == null){
	
			comboEclusa = new JComboBox(new Vector(new EclusaDB().getDadosCombo()));
			comboEclusa.setBounds(90, 40, 160, 30);
			comboEclusa.addItemListener(new ItemListener(){
				
				public void itemStateChanged(ItemEvent e) {
					if(e.getStateChange() == ItemEvent.SELECTED)
						loadTable(getCod(comboEclusa.getSelectedItem().toString()), getCodSelected());
				}
	           });
		}
		return comboEclusa;
	}

       public int getCod(String s){
		
		String [] codString = s.split("-");
		int cod = Integer.parseInt(codString[0]);
		
		return cod;
	}

public void mouseClicked(MouseEvent e) {

               if(e.getSource() == btnAcessar){
			int cod = getCod(comboEclusa.getSelectedItem().toString());
			InspecaoDescricaoGUI i = new InspecaoDescricaoGUI(cod);
			i.setTitle("Cadastros");
			i.setVisible(true);
		}
}
A outra classe
public class InspecaoDescricaoGUI extends JFrame implements MouseListener{

	private static final long serialVersionUID = 1L;
	
	private JPanel container = null;
       private int codEclusa;

     InspecaoDescricaoGUI(int codEclusa){
		super();
		initialize();
		this.codEclusa = codEclusa;
	}

       public void initialize(){
		
		this.setSize(650,500);
		this.setContentPane(getContainer());
	}

       public void setCodEclusa(int codEclusa){
		
		System.out.println(codEclusa);
		this.codEclusa = codEclusa;
	}
	
	public int getCodEclusa(){
		
		return codEclusa;
	}
}

Ae galera ta as partes dos códigos mais importantes para esse problema

Gabriel_Galhardi

não manjo mto de swing, mas nao tem como na sua combo, vc pega o getValue direto?

brunorota

Nao tem
Pq eu kero o seguinte ali

No meu combo vai ter varias Strings do tipo

1- BRUNO
2- RAFAEL
3- GABIRU

etc

O metodo getCod, ele pega a String inteira e retorna soh o número de cada nome e converte pra Int

Entendeu?

^^

filipenf

Faltou você colocar o código que popula o combo. Continuo achando que o problema está no método getCod(), debuga ele e verifica depois de dar o split se o array de strings ficou com os valores corretos nas 2 posições.

Gabriel_Galhardi

entendi, nao vejo erro…
o getCod está retornando o int correto?

brunorota

filipend o erro nao esta no getCod

Eu jah testei ele ta retornando os int corretamente, tanto eh q eu uso esse método para outros calculos na classe tbm

Mais pra desencargo de peso, quando eu chamo o setCodEclusa em vez de eu passar o dado q o getCod retorna, eu passei um Int

i.setCodEclusa(2);

E retornou o mesmo valor 0 q esta retornando quando eu passo os dados

comboEclusa = new JComboBox(new Vector(new EclusaDB().getDadosCombo()));

Eu jah instancio o comboEclusa com os dados nele
Esse new EclusaDB().getDadosCombo() q contém todos os dados do combo

=/

Gabriel_Galhardi

coloca o debug no metodo set e veja se ele nao está sendo chamado alguma vez inesperadamente.

filipenf

Certo. Você verificou que está chegando 0 via debugger ou via println? porque dependendo do caso o debugger se perde na hora de buscar o valor da variável e pode estar te mostrando o valor da variável de instância e não da local ( parâmetro ).

Se quiser testar isso, altera o nome do parâmetro pra cod e verifica o valor que fica essa variável.

brunorota

Ae galera
Eu consegui \o/

O erro não tava no código mesmo
Estava na lógica
Fiz com o set mesmo e deu certo
Agora eu debuguei com o println e ele mostrou o valor correto da variavel

Eu pensei q nao tava indo o valor correto pq o debug tava mostrando o valor 0, e como a logica pra carrega o meu JTable tava errada e o JTable nao carregava eu confiei no debug

Eu tava fazendo burrada =/

Obrigado a todos pela ajuda

^^

Criado 22 de junho de 2009
Ultima resposta 22 de jun. de 2009
Respostas 15
Participantes 3