[resolvido]Passar dados de uma janela para outra

10 respostas
L

Boa tarde Galera, td bem?

Seguinte, estou com um problemão a semanas, que me fez até atrasar na entrega do projeto no curso

Primeiro preciso deixar gravado os dados do usuário que está logado no programa, atravez da janela de abertura ou login ...
Tentei gravando o código em uma tabela do banco de dados, e assim que o programa reabrir, ele apaga tudo que está gravado naquela tabela, assim não haveria nem repetição de login, e nem "lixo"...

tentei com ....

public boolean exclui_Login(CorretorBean dados){
        try{
            String comando = "DELETE FROM Tb_Login WHERE id > 0";  

//excluir todos os ids que são maiores que 0, como começa com o número 1, excluirá todos (funcionou diretamente no banco de dados)      
          
            PreparedStatement stm = conexao.prepareStatement(comando);
            stm.setInt(1,dados.getId());
            
            return !stm.execute();
            }
        
        catch(SQLException erro){
            return false;
        }   
    }

SEGUNDO PROBLEMÃO:

Tenho em uma tela Menu, uma Lista contendo informações de imóveis, atravez de uma busca no banco de dados, e ao clicar em algum imóvel, ele abre uma outra janela, detalhesImovel, que conteria todos os dados do imóvel selecionado, porém não estou conseguindo fazer ele jogar os dados do imovel selecionado para a outra janela...

segue código para criar tabela (vetores)

public Vector lista_imovel(){
        try{
            String comando = "SELECT * FROM TB_Imovel ORDER BY Tipo";
            PreparedStatement stm = conexao.prepareStatement(comando);
                        
           ResultSet resultado = stm.executeQuery();
           Vector retorno = new Vector();
           
           while (resultado.next()){
               Vector v = new Vector();
               v.add(resultado.getInt("Codigo"));
               v.add(resultado.getInt("Tamanho"));               
               v.add(resultado.getString("Tipo"));
               v.add(resultado.getFloat("Preco"));
               retorno.add(v);
                }
           return retorno;             
        }               
        catch(SQLException erro){
            return null;
        }
        
    }

E este lista o resultado em uma lista

public void jTable1MouseClicked(java.awt.event.MouseEvent evt){
        JTable tab = (JTable)evt.getSource();
        int selectedRow = tab.getSelectedRow();       
//        JOptionPane.showMessageDialog(this, "A linha selecionado é: " + (selectedRow + 1) 
//                + " e o valor do Tamanho é: " + tab.getValueAt(selectedRow, 1) + " m²");
                DetalhesImovel di = new DetalhesImovel();
                di.setVisible(true);
                di.setLocationRelativeTo(null);                
    }    

//o que está comentado, é para saber se estava reconhecendo o imóvel selecionado, isto está certo

Então galera, é basicamente isso, se alguém puder me ajudar, ficarei muitoo agradecido

10 Respostas

F

Para passar valores de uma tela para outra, veja se isso ajuda:

http://www.guj.com.br/java/55710-jdialog-devolvendo-valor-pra-jinternalframe#292687

Abraços e fica com DEUS.

R

Brother,

acho que não e nada legal essa ideia de gravar os dados do login no banco de dados!

sugiro o seguinte:

public class Arquivo {
	private static Arquivo arquivo;

	/// aqui vc coloca seu dados...

	public static Arquivo getInstance() {
		if ( arquivo == null ) {
			arquivo = new Arquivo();
		}
		return arquivo;
	}

private Arquivo() {}

	// implementa get/set para os dados

}

No Login

Arquivo arquvio = Arquivo.getInstance();

// arquivo.set SEUS DADOS ....

Em qualquer parte da aplicação que queira ter acesso aos seu dados gravados no login

Arquivo arquvio = Arquivo.getInstance();

// arquivo.get SEUS DADOS....

isso para seu primeiro problema

L

rodrigues_sis
Vc disse para criar uma classe, onde eu vá receber todos oos dados do CorretorBean no caso?

e depois no EVENTO do botão, fazer um novo objeto do Arquivo(), e settar os dados que eu quero correto?
mais ele ficara gravado durante a execução do programa, mesmo mudando frequentemente de uma janela para a outra?

R

Isso Luiz,

mas no evento do botao, em outra janela, vc nao cria um “novo objeto” como falou… voce apenas utiliza o criado no loggin (CorretorBean, se entendi direito) através do metodo getInstance(), e por isso consegue ter acesso aos dados criados anteriormente.

não sei se fui claro e se é a melhor solução para seu problema, mas faça o teste ai e se tiver duvidas poste aqui.

L

rodrigues_sis
Fiz a classe Arquivo, e o método arquivo, como vc disse, dentro do CorretorBean.

Porém está dando um erro "Illegal static declaration" e fala para mudar o static ...

public class Arquivo{ 
  public static Arquivo arquivo;       // o erro está aqui      
    private String nome ;
    private long cresci ;    
    private int dtd_nascimento ;
    private String sexo ;
    private long telefone ;
    private long celular ;
    private String area_atuaca;    
    private EnderecoBean endereco = new EnderecoBean();
    
    public static Arquivo getInstance(){  // e aqui
        if(arquivo == null)
            arquivo = new Arquivo();  // aqui aparece outro erro: non-static variables this cannot be reference from a static contexto
        return arquivo;
    }
    
    private Arquivo(){
    }

//pares de getters e setters

no login ficou assim, vou passar todo o evento do botão ok ?!

private void b1ActionPerformed(java.awt.event.ActionEvent evt) {                                   
        boolean sucesso = false;
        Arquivo arquivo = Arquivo.getInstance();
        arquivo.getCresci();
        arquivo.getNome();
    try{        
       String teste = "0k";  
       if(t1.getText().trim().equals("")){
            JOptionPane.showMessageDialog(this, "Por Favor, Insira um Creci");
            }
        else {
            CorretorDAO cor = new CorretorDAO();
            CorretorBean c = new CorretorBean();           
            c.setCresci(Long.parseLong(t1.getText()));
            c = cor.consulta_corretor(c); 
            if (c != null){  
                this.setVisible(false);
                TelaMenu menu = new TelaMenu();
                menu.setVisible(true);
                }
            else JOptionPane.showMessageDialog(this, "Creci Inválido!");
               }            
        }
    catch(Exception erro){
        JOptionPane.showMessageDialog(this, "Ocorreu um erro!  " + erro);
        }

Se eu tirar o static do Arquivo no CorretorBean, desaparece o erro, porém no Arquivo.getInstance() no botão fica com erro!!

I
luiz_rossini:
rodrigues_sis Fiz a classe Arquivo, e o método arquivo, como vc disse, dentro do CorretorBean.

Porém está dando um erro "Illegal static declaration" e fala para mudar o static ...

public class Arquivo{ 
  public static Arquivo arquivo;       // o erro está aqui      
    private String nome ;
    private long cresci ;    
    private int dtd_nascimento ;
    private String sexo ;
    private long telefone ;
    private long celular ;
    private String area_atuaca;    
    private EnderecoBean endereco = new EnderecoBean();
    
    public static Arquivo getInstance(){  // e aqui
        if(arquivo == null)
            arquivo = new Arquivo();  // aqui aparece outro erro: non-static variables this cannot be reference from a static contexto
        return arquivo;
    }
    
    private Arquivo(){
    }

//pares de getters e setters

no login ficou assim, vou passar todo o evento do botão ok ?!

private void b1ActionPerformed(java.awt.event.ActionEvent evt) {                                   
        boolean sucesso = false;
        Arquivo arquivo = Arquivo.getInstance();
        arquivo.getCresci();
        arquivo.getNome();
    try{        
       String teste = "0k";  
       if(t1.getText().trim().equals("")){
            JOptionPane.showMessageDialog(this, "Por Favor, Insira um Creci");
            }
        else {
            CorretorDAO cor = new CorretorDAO();
            CorretorBean c = new CorretorBean();           
            c.setCresci(Long.parseLong(t1.getText()));
            c = cor.consulta_corretor(c); 
            if (c != null){  
                this.setVisible(false);
                TelaMenu menu = new TelaMenu();
                menu.setVisible(true);
                }
            else JOptionPane.showMessageDialog(this, "Creci Inválido!");
               }            
        }
    catch(Exception erro){
        JOptionPane.showMessageDialog(this, "Ocorreu um erro!  " + erro);
        }

Se eu tirar o static do Arquivo no CorretorBean, desaparece o erro, porém no Arquivo.getInstance() no botão fica com erro!!

Cara não vejo nenhum erro no seu código, coloque o erro que esta mostrando, porque talvez você esqueceu de fechar uma chave, outra coisa em vez de:

public static Arquivo arquivo;
altere para:
private static Arquivo arquivo;

flw!

L

Ivan Alves, blz?

Então cara, não esqueci de fechar as chaves, pq só está dando erro aonde eu deixei cometado…

os erros são :

"Illegal static declaration in inner class br.com.imobiliaria.corretorbean.arquivo modifier 'static' is only allowed in constant variable declaration"
referente a estas duas linhas

public static Arquivo arquivo;  
public static Arquivo getInstance(){

e o outro

referente á

arquivo = new Arquivo();

se eu alterar de public para private, continua o msm erro … :confused:

R

Eu também não vi nada de errado no codigo… exceto que a instancia de arquivo deve sim ser private, como no exemplo inicial que te mandei.

Se você quiser me mandar o projeto completo, eu analiso e caso encontre o erro eu posto aqui o que acontece:

[email removido];
[email removido];

Att

I

Seguinte não deixe a classe Arquivo como classe interna e crie uma nova classe para ela com o mesmo nome ai vê o resultado!

L

Ivan Alves
fiz o que vc falou, para criar a class arquivo separado e instaciar o que preciso, e deu certo agora está sem erros, agora só vou fazer o teste para saber se passa os dados que preciso para outra janela…

Criado 22 de março de 2012
Ultima resposta 24 de mar. de 2012
Respostas 10
Participantes 4