Como pegar o valor da variável?

7 respostas
C

Amigos
Sou muito novo em Java, estou perdido, vou tentar explicar passo-a-passo porque nem sei qual pergunta certa a fazer.

Passo 1 o método passa o valor da variável Pessoa_ID (testei ta ok).

private void jBVeiculosActionPerformed(java.awt.event.ActionEvent evt) {                                          
        String  Pessoa_ID = (String) jTLista.getModel().getValueAt(jTLista.getSelectedRow(), 0);
        ListaVeiculos listv = new ListaVeiculos(null, true, Pessoa_ID);
        listv.setVisible(true);
}

Passo 2 O Construtor recebeu o valor (testei com JOption).

public ListaVeiculos(java.awt.Frame parent, boolean modal, String Pessoa_ID) { super(parent, modal); initComponents(); JOptionPane.showMessageDialog(null, "valor chegou aqui: "+ Pessoa_ID); }

Passo 3 Gostaria de usar o valor desta variável em outro método e nao consigo, fica sempre marcado como erro.

private void jBConsultarActionPerformed(java.awt.event.ActionEvent evt) { JOptionPane.showMessageDialog(null, "Porque fica com erro aqui? "+ Pessoa_ID); }

Obrigado!
Curioso em TI!

7 Respostas

ribclauport

Existem variáveis de instância, variáveis locais(de método ou automáticas) e variáveis de classe(static), as variáveis locais de método tem seu escopo definido
dentro do método ou bloco em que foram declaradas.
No seu caso você tem duas alternativas, ou declara a variável que você está usando como variável de instância, ou passa ela para seu metodo…

No codigo abaixo a variável vem de onde? deveria ser algo do tipo

private void jBConsultarActionPerformed(java.awt.event.ActionEvent evt) {                                             
            JOptionPane.showMessageDialog(null, "Porque fica com erro aqui?  "+listv . Pessoa_ID);  
}

Da erro porque Pessoa_ID, é uma variável de instância de ListaVeiculos, voce declarou no metodo jbVeiculosActionPerformed…
Bom não manjo muito de swing, não sei como é o ciclo de vida ae do seu código, mas se quer que listv.pessoa_id esteja disponivel nos outros métodos
declare abaixo da classe o objeto ListaVeiculos…

veja, algo mais ou menos assim:

public class ClasseQualquer {
	ListaVeiculos listv = null;

	private void jBVeiculosActionPerformed(java.awt.event.ActionEvent evt) {
		String Pessoa_ID = (String) jTLista.getModel().getValueAt(
				jTLista.getSelectedRow(), 0);
		this.listv = new ListaVeiculos(null, true, Pessoa_ID);
		this.listv.setVisible(true);
	}

}

Espero ter ajudado.

mfidelis

Bom dia,
Posta o erro aí…Quem sabe… :slight_smile:

asandrob

Voce declarou a variável Pessoa_ID dentro do método jBVeiculosActionPerformed, então ela só é visível dentro dele, para ela ficar visível em toda a classe é necessário que declare fora de qualquer método.

public class ClasseQualquer {   
    String Pessoa_ID = null;   
  
    private void jBVeiculosActionPerformed(java.awt.event.ActionEvent evt) {   
        Pessoa_ID = (String) jTLista.getModel().getValueAt(   
                jTLista.getSelectedRow(), 0);   
        this.listv = new ListaVeiculos(null, true, Pessoa_ID);   
        this.listv.setVisible(true);   
    }   
  
}
C

Deu certo asandrob.
Fiz assim, criei uma variável PES e atribui o valor que estava recebendo por parâmetro.

public class ListaVeiculos extends javax.swing.JDialog {
    String PES = null;
    public ListaVeiculos(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
    }
    public ListaVeiculos(java.awt.Frame parent, boolean modal, String Pessoa_ID) {
        super(parent, modal);
        initComponents();
        PES = Pessoa_ID;
    }

private void jBConsultarActionPerformed(java.awt.event.ActionEvent evt) {                                            
            Class.forName("com.mysql.jdbc.Driver");
            Connection conex;
            conex = DriverManager.getConnection("jdbc:mysql://localhost/personalcar","root","");
            String query = "SELECT * FROM view_veiculos WHERE Pessoa_ID = "+PES+" AND VeiculoPlaca like ?  ";
            PreparedStatement stat;
            stat = conex.prepareStatement(query);
            stat.setString(1, "%"+jTPlaca.getText()+"%");
            ResultSet res;
            res = stat.executeQuery();
}
E

Olá, tenho uma dúvida e espero que voces possam me responder.

tenho esse código:

private void QNT_AMIDOFocusLost(java.awt.event.FocusEvent evt) {                                    
       
       DecimalFormat decimal = new DecimalFormat( "0.00" ); // função arrendondamento
        
       String pega_valor_amido = QNT_AMIDO.getText();  
       double peganumero_amido = Double.parseDouble(pega_valor_amido);  
  
       double valor_kcal_amido = peganumero_amido * KCAL_amido;
       kcal_amido.setText(decimal.format(valor_kcal_amido) );  

       
       double valor_ch_amido = peganumero_amido * CH_amido; 
       ch_amido.setText(decimal.format(valor_ch_amido));
       
       double valor_ptn_amido = peganumero_amido * PTN_amido;
       ptn_amido.setText(decimal.format(valor_ptn_amido));
       
       double valor_lip_amido = peganumero_amido * LIP_amido;
       lip_amido.setText(decimal.format(valor_lip_amido));
    }

Esse codigo esta dentro de um evento focus lost de um campo de texto, quando perde o foco ele executa isso, Gostaria de usar a variavel valor_lip_amido (da ultima linha) em outro focus lost de outro campo de texto mas ele diz que o campo nao existe e me mostra a opção para cria-lo. Oque tem de errado ? MUITO OBRIGADO

ribclauport

Sua pergunta está ligada a “escopo de variáveis”, veja bem você pode declarar sua variável como uma variável de “classe”, ou seja static, se todas as classes forem compartilhar esse valor, se for usar em uma “instância” particular pode declarar como variável de instância ou seja, algo assim:

class Escopo {
	private double valor_lip_amido;

	public double getValor_lip_amido() {
		return valor_lip_amido;
	}

	public void setValor_lip_amido(double valor_lip_amido) {
		this.valor_lip_amido = valor_lip_amido;
	}
	
	private void QNT_AMIDOFocusLost(java.awt.event.FocusEvent evt) {                                      
        
	      DecimalFormat decimal = new DecimalFormat( "0.00" ); // função arrendondamento  
	         
	      String pega_valor_amido = QNT_AMIDO.getText();    
	      double peganumero_amido = Double.parseDouble(pega_valor_amido);    
	  
	      double valor_kcal_amido = peganumero_amido * KCAL_amido;  
	      kcal_amido.setText(decimal.format(valor_kcal_amido) );    
	  
	        
	      double valor_ch_amido = peganumero_amido * CH_amido;   
	      ch_amido.setText(decimal.format(valor_ch_amido));  
	        
	      double valor_ptn_amido = peganumero_amido * PTN_amido;  
	      ptn_amido.setText(decimal.format(valor_ptn_amido));  
	        
	      valor_lip_amido = peganumero_amido * LIP_amido;  
	      lip_amido.setText(decimal.format(valor_lip_amido));  
	   }  

}
ViniGodoy

Por favor, evite o uso de LETRAS MAIÚSCULAS no título dos seus tópicos.
Além disso, evite pedir URGÊNCIA, pois isso é considerado falta de etiqueta.

Também não é necessário destacar que você precisa de AJUDA, pois isso ficou óbvio assim que você abriu o tópico.

Criado 13 de março de 2012
Ultima resposta 26 de mar. de 2012
Respostas 7
Participantes 6