Passar dados de um JFrame p/ o outro [RESOLVIDO]

Olá pessoal!
Tenho um JFrame de consulta de usuários e quero que quando clicar no botão alterar cadastro, os dados selecionados numa JTable passem p/ os JTextFilds do outro JFrame.
Como pegar os dados da JTable tá tranquilo eu só não sei é como passar os dados de um JFrame p/ o outro.
Alguém tem alguma idéia?
Valew!

Dependendo da forma que você estiver manuseando os dados do JTable você pode criar um objeto com esses dados e manda-los para o JFrame, nesse caso no construtor do Formulario de pesquisa você manda o JFrame que representa o cadastro, dessa forma você possui a referência desse cadastro (JFrame) podendo acessar os JTextField que existem nele.

Espero ter ajudado. :slight_smile:

[quote=laudenpower]Dependendo da forma que você estiver manuseando os dados do JTable você pode criar um objeto com esses dados e manda-los para o JFrame, nesse caso no construtor do Formulario de pesquisa você manda o JFrame que representa o cadastro, dessa forma você possui a referência desse cadastro (JFrame) podendo acessar os JTextField que existem nele.

Espero ter ajudado. :slight_smile: [/quote]

Tem como vc dá um exemplo para que eu possa entender melhor?
Grato!

Oi,

Poderá ser feito de forma estruturada.

  • Crie uma classe final, com todas as variaveis que irão ser alimentadas.
  • Alimente essas variaveis com o conteudo da tabela.
  • Passe por parametro ao chamar seu outro frame a variavel da estrutura.

[code]// Criação da final class contendo a Estrutura.
public final class StructureTable {

public String
<variavel>,
<variavel>,
<variavel>,
<variavel>,
<variavel>,
<variavel>,
<variavel>,
<variavel>,
<variavel>;

/*==========================================
Construtores.
===========================================*/

public		StructureTable() {

}	

public		StructureTable(String <variavel1>, String <variavel2>) {
	<variavel> = <variavel1>
}			

}[/code]

[code]// Tela que tem sua Tabela.
public class Table extends JFrame {

// Instancia a StructureTable
private StructureTable
io_structure = new StructureTable();

// Alimenta com os dados de sua tabela.
io_structure.<variavel> = <tabela>.getValue(.....);

// Chama o FRAME passando a estrutura.
new JanelaFrame(io_structure);

}[/code]

[code]// Outro frame.
public class JanelaFrame extends JFrame {

// Cria a estrutura;
public StructureTable
io_structure;

// Devera ter um construtor que recebe a estrutura.
public		JanelaFrame(StructureTable ao_structure) {
	
	// Recebe a estrutura vinda da classe Table
	io_structure = ao_structure;
}

}[/code]
Tchauzin!

Qual table model você está usando?

Olá pessoal!
Desculpe por trazer este tôpico à tona, mas acontece que eu não estou conseguindo passar os dados de um JFrame para o outro.
Eu gostaria apenas de um exemplo de como fazer isso com os dados de um JTextField, passando de JTextField para o outro do outro JFrame, depois eu me viro para passar os dados da JTable.
Agradeço a ajuda de todos!
T+

No frame que tu vai receber os dados é soh criar um construtor que receba os dados exemplo, na chamada do frame novo vc faz isso

o contrutor do FrameNovo seria algo do tipo

[code]public FrameNovo(int cod, String nome){

textFieldCod.setText(String.valueOf(cod));
textFieldNome.setText(nome);

}[/code]

Falows

Amigão,

eu prefiro usar uma camada de negócios para isso, vou te explicar como:

Vamos imaginar uma classe Mulher, certo? vamos lá:

public class Mulher {
   String nome;
   boolean tpm;
   
   public Mulher(String nome, boolean tpm){
      this.nome = nome;
      this.tpm = tpm;
   }

   public Mulher() {
      this(null, false);
   }

   public void setNome(String nome) {
      this.nome = nome;
   }

   public String getNome(){
      return this.nome;
   }

   public void setTPM(boolean tpm) {
      this.tpm = tpm;

      if(tpm)
         System.out.println("Caution! It's dangerous!!");
   }

   public boolean isInTPM() {
      return this.tpm;
   }
}

Pronto, essa classe representa uma mulher dentro do java.

Agora é mais fácil, imagina que cada linha da sua tabela correponda a uma mulher, para passá-las para uma outra JFram, para editar os dados, por exemplo, basta simplesmente criar um construtor na sua tela(a JFrame):

public class FrmMulher extends JFrame {
   public FrmMulher(Mulher m) {
      this.txtNome.setText(m.getText());
      this.chkTPM.setSelected(m.isInTPM());
   }
}

Eu costumo usar sempre dois contrutores, um pedindo uma classe de modelo(lembre-se, um modelo serve de base pra alguma coisa), que uso para alterar dados de um modelo(entidade), e um construtor vazio, para criar um novo modelo.

Dê uma pesquisada sobre MVC, e vc vai entender direitinho isso aí =)

Olá galera! Descobri um jeito simples de fazer o que eu queria. É o seguinte:
No clique de um botão eu pego a linha da JTable que foi selecionada e a envio para os JTextFields que eu tenho no outro JForm.
Segue o código:

private void btAlterarActionPerformed(java.awt.event.ActionEvent evt) {                                          
       //Variáveis para passar como parâmetro
        String nome = new String("");
        String endereco = new String("");
        String fone = new String("");

        for(int i=0; i <= tabUsuarios.getSelectedRow(); i++){
         //As variáveis recebem os valores da JTable
            nome = (String) tabUsuarios.getValueAt(i, 1);
            matricula = (Integer) tabUsuarios.getValueAt(i, 3);
            endereco = (String) tabUsuarios.getValueAt(i, 4);
            fone = (String) tabUsuarios.getValueAt(i, 5);
        }

        FormAlterarFuncinario janela = new FormAlterarFuncinario();//Crio um formulário chamado janela, com base no formulário que eu quero abrir
      //Seto os JTextFields que eu tenho no segundo formulário com os valores de minhas variáveis
        janela.tfNome.setText(nome);
        janela.tfEndereco.setText(endereco);
        janela.tfFone.setText(fone);
        janela.setVisible(true);                   
}

Galera, valeu pela força!
Vcs são 10!
T+

[quote=marcos.9306]Amigão,

Eu costumo usar sempre dois contrutores, um pedindo uma classe de modelo(lembre-se, um modelo serve de base pra alguma coisa), que uso para alterar dados de um modelo(entidade), e um construtor vazio, para criar um novo modelo.

Dê uma pesquisada sobre MVC, e vc vai entender direitinho isso aí =)[/quote]

Mais conteúdo sobre MVC recomendo acessar este link: http://www.guj.com.br/posts/list/129277.java
Cuidado: Não confunda MVC com CAMADAS (Layer’s). Uma coisa é MVC, outra coisa é Layer’s!
Espero ter colaborado! :wink:

[quote=marcos.9306]Amigão,

eu prefiro usar uma camada de negócios para isso, vou te explicar como:

Vamos imaginar uma classe Mulher, certo? vamos lá:

public class Mulher {
   String nome;
   boolean tpm;
   
   public Mulher(String nome, boolean tpm){
      this.nome = nome;
      this.tpm = tpm;
   }

   public Mulher() {
      this(null, false);
   }

   public void setNome(String nome) {
      this.nome = nome;
   }

   public String getNome(){
      return this.nome;
   }

   public void setTPM(boolean tpm) {
      this.tpm = tpm;

      if(tpm)
         System.out.println("Caution! It's dangerous!!");
   }

   public boolean isInTPM() {
      return this.tpm;
   }
}

Pronto, essa classe representa uma mulher dentro do java.

Agora é mais fácil, imagina que cada linha da sua tabela correponda a uma mulher, para passá-las para uma outra JFram, para editar os dados, por exemplo, basta simplesmente criar um construtor na sua tela(a JFrame):

public class FrmMulher extends JFrame {
   public FrmMulher(Mulher m) {
      this.txtNome.setText(m.getText());
      this.chkTPM.setSelected(m.isInTPM());
   }
}

Eu costumo usar sempre dois contrutores, um pedindo uma classe de modelo(lembre-se, um modelo serve de base pra alguma coisa), que uso para alterar dados de um modelo(entidade), e um construtor vazio, para criar um novo modelo.

Dê uma pesquisada sobre MVC, e vc vai entender direitinho isso aí =)[/quote]

Olá amigos,

Fiz esse exemplo que o amigo Marcos citou acima, mas não estou conseguindo visualizar o nome do usuário no outro frame
Meu código:
Tenho uma Class UsuarioControl onde fica meu CRUD. Dentro dessa classe um método chamado de loginUsuario.
ao realizar o login, quero guardar o nome do usuário.

    public boolean loginUsuario(String idUsuario, String senha){
        int size = 0;
        user = new ArrayList<UsuarioBean>();
        try{
           AcessoOracle conn = new AcessoOracle();
           pstm = (PreparedStatement)conn.conectar().prepareStatement(consultarUsuario);
           pstm.setString(1,idUsuario);
           pstm.setString(2,senha);
           rs = pstm.executeQuery();
           UsuarioBean usu;
           while (rs.next()){
               size++;
               usu = new UsuarioBean();
               usu.setCod_usuario(rs.getString("cod_usuario"));
           }
           conn.desconectar();
           if (size  == 1)
               return true;
           else
               return false;
           
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return false;
    }

Tenho uma class UsuarioBean com os meus gets e sets, pra onde passo o nome do usuário.

Criei um outro frame, frmPrincipal, onde tenho dois construtores:

public class frmListarRelat extends javax.swing.JFrame {

    

    /** Creates new form frmListarRelat */
    public frmListarRelat() {
        initComponents();
        setLocationRelativeTo(null);
        
        
    }

    public void usu(UsuarioBean m){
        lbUsuario.setText(m.getCod_usuario());
    }

Não dá nenhum erro de compilação, só que o 2º construtor não é inicializado, somente o 1º que não tem parâmetro.

O método que chama o frame frmListarRelat é:

public void acessar(){
        setUsuario(tfUsuario.getText());
        setSenha(tfSenha.getText());
        login = new UsuarioControl();

        if(login.loginUsuario(getUsuario(), getSenha().toUpperCase())){
           setVisible(false);
           fp = new frmListarRelat();
           fp.setVisible(true);
        }else
            JOptionPane.showMessageDialog(null,"Usuario ou Senha incorreta");
    }

Alguém teria algum ideia do que estou fazendo errado?

Obrigado

Josenias

Diante de tudo isso alguem pode me dizer como que obtenho um valor de um variavel que esta em outro form so que com os dois forms rodando ???

Tipo assim … eu digito um valor em um form e mostrar no outro so que os dois forms executando …

Alguem me ajuda !!!
:frowning: :frowning: :frowning: