Como resolver: non-static variable

Bom, hoje comecei a implementar uma Session na aplicação só que apareceu esse erro:

non-static variable ctUsuario cannot be referenced from a static context
non-static variable ctSenha cannot be referenced from a static context

Nessa parte aqui:

ResultSet rs = stmt.executeQuery("SELECT * FROM usuario WHERE user = '" + ctUsuario.getText() +"' AND senha = md5('"+ ctSenha.getText() +"')");

Procurei algo parecido e não consegui resolver.

[]'s

Cara vc deve estar querendo um usar uma variável não estática dentro de um método estático.

suas duas variaveis são declaradas normais e o metodo que vc esta usando eh static.

E como eu posso mudar o meu TextField para static ?

[]'s

[quote=Vander Carlos]E como eu posso mudar o meu TextField para static ?

[]'s[/quote]

A pergunta que você fez está errada. O correto é perguntar “o que devo fazer para tirar os “statics” do meu código”?

De modo geral, exceto pelo “main” e pelos “public static final ___ CONSTANTE = ____”, não é bom ficar abusando de statics.

Tem como eu deixer essa minha Session sem o static ?

public static class Sessao{  
  
   private static Sessao instance = null;  
   
   private Usuario usuario;  
  
   private Sessao(){  
   }  
  
   public void setUsuario(Usuario usuario){  
      this.usuario = usuario;  
   }  
   public Usuario getUsuario(){  
       return usuario;  
   }  
   public static Sessao getInstance(){  
         if(instance == null){  
               instance = new Sessao();  
         }  
        return instance;  
   }  
Sessao sessao = Sessao.getInstance();  
sessao.setUsuario(usuario);

Quando eu tiro todos os métodos estáticos e instancio o método aparece isso:

non-static method getInstance() cannot be referenced from a static context

primeiro eu recomendo a você estudar o que é um método/propriedade estática.

E para seu código funcionar, você tira os static, exceto o do getInstance, esse deve continuar sendo static. E na hora de você executar o método getInstance a partir de um ambiente não estático, você usa “session = Session.getInstance();”

Dessa forma?

[code]public class Sessao{
private static Sessao instance = null;
private Usuario usuario;

private Sessao(){
}

public void setUsuario(Usuario usuario){
this.usuario = usuario;
}

public Usuario getUsuario(){
return usuario;
}
public static Sessao getInstance(){
if(instance == null){
instance = new Sessao();
}
return instance;
}
} [/code]

Existe apenas e tão somente uma sessão no seu sistema inteiro (que é a sua intenção, usando “static”)? Parece um bocadinho amarrado.

Estou usando uma sessão em uma classe que envia Email:

...
Session session = Session.getDefaultInstance(props, auth);
session.setDebug(true); //Habilita o LOG das ações executadas durante o envio do email
...