Manipulação de variáveis

Olá,
eu tenho um JFrame… e nele tem um JComboBox…
então a informação que está selecionada eu adiciono em uma variável.

e logo após abre uma nova janela…
e eu preciso trabalhar com esta variavél nesta nova janela…
como faço para levar de um frame a outro…

abraços…

uma das maneiras é passar o valor da variavel no construtor dessa segunda JFrame ou então passar por um metodo dessa segunda JFrame.

Olá para passar uma variavel de uma JFrame para outra te aconselho a criar um metodo para isso, tente fazer assim:

/* Cria uma variavel public
 * Esta variavel sera responsavel pelo armazenamento da informação
 */
public String obtido = null;

/* Pega o valor da opção selecionada no JComboBox
 * Usando o switch para tratar o valor que sera armazenado na
 * variavel obtido
 */
switch(seu_combo.getSelectedIndex()){
case 0:
    obtido = seu_combo.getSelectedItem().toString();
    break;
/* Daqui por diante e so repetir o procedimento */
}

/* Cria o metodo que passa a variavel obtido */
public String getObtido(){
    return obtido;
}

Assim para chamar a variavel obtido em outro JFrame basta usar o metodo getObtido()

Valeu…

ta ok ^^
obrigado…

Talvez neste caso o ideal seria trabalhar com um pattern Observer…

Desta forma, um frame ficaria sempre escutando as modificações do outro. Quando o combo mudasse de valor, um frame chamaria uma função no outro, para que ele pudesse tomar as ações necessárias. Normalmente quand eu tenho dependência entre telas em aplicações Swing eu crio um mecanismo como este.

Vale a pena dar uma olhada!!

m4des

ele só está retornado 1??
pq??

eu não usei o switch pq oq tem dentro do combo vem do banco já…
dai está dentro do actionPerformed lá pra pegar o valor da combo e adicionar na var…
mas esta dando erro não sei por que :S

flavi0 acho que este codigo resolve seu problema

import javax.swing.*;
import java.awt.event.*;
import java.sql.*;
/*
 * Este exemplo esta usando como banco o MySQL
 * Caso use outro basta mudar o Class.forName() e o DriverManager.getConnection()
 */
public class PassarValores implements ActionListener  {
	Frame2 f2 = new Frame2();
	public JComboBox combo = new JComboBox();
	Connection c = null;
	public void actionPerformed(ActionEvent e) {
		if(e.getSource().equals(combo)){
			f2.setLabelValor(this.getValorSelecionado());
			//...
		}
	}
	public PassarValores(){
		//...
		JFrame f1 = new JFrame("JFrame 1");
		this.conectar();
		combo.addActionListener(this);
		f1.getContentPane().add(combo);
		f1.setLayout(new java.awt.FlowLayout());
		f1.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
		f1.setSize(500, 300);
		f1.setVisible(true);
	}
	public static void main(String[] string){
		new PassarValores();
	}
	// Metodo que ira conecta-lo ao banco de dados
	public void conectar(){
		try{
			Class.forName("com.mysql.jdbc.Driver");
			c = DriverManager.getConnection("jdbc:mysql://---/---", "---", "---");
			PreparedStatement pstmt = c.prepareStatement("select * from seu_banco");
			ResultSet rs = pstmt.executeQuery();
			while(rs.next()){
				combo.addItem(rs.getString("---"));
			}
		}
		catch(Exception e){
			//...
		}
	}
	// Metodo que ira passar a variavel para outor JFrame 
	public String getValorSelecionado(){
		return combo.getSelectedItem().toString();
	}
}
class Frame2 {// Classe onde vai aparecer a variavel passada
	JLabel label = new JLabel();
	JFrame f2 = new JFrame("JFrame 2");
	public Frame2(){
		//...
		f2.getContentPane().add(label);
		f2.setLayout(new java.awt.FlowLayout());
		f2.setSize(250, 150);
	}
	// Metodo que seta o valor passado a um JLabel
	public void setLabelValor(String string){
		label.setText(string);
		f2.setVisible(true);
	}
}

Valeu…

valew mano consegui =D
obrigado

:smiley:

Olá pessoal,
Estou com este mesmo problema, mas ainda nao consegui resolver…
É o seguinte, tenho um Jframe que é cadastro de clientes, quando o usuario aperta F4
abre um outro Jframe que permite ele efetuar uma busca, esta busca vai para um Jtable
quando o cara clica no cliente que ele quer visualizar eu gostaria de mandar para o Jframe de Traz(cadastro de clientes).

No frame de tras(cadastro de clientes) eu criei um metodo que recebe o ResultSet e atualiza os campos, mas isso nao acontece…
quando fecho esta tela de busca, assim voltando para a tela clientes ela se encontra intacta…Porem quando eu clico no
botao proximo registro ele mostra a busca que eu fiz na tela anterior.

Alguem poderia de ajudar???

Vejo que ninguem respondeu, não sei se foi dificil a pergunta ou porque atravessei o foro…Da proxima vez crio um tópico separado, pra manter a ordem…heheh.

Com relação a pergunta acima, já consegui resolver.
Caso alguem estiver com o mesmo problema entre em contato comigo pelo mail ou msn que estarei a disposição para ajudar.

Valews!!!