Cannot use this in a static context

3 respostas
bruno_7317

Meu código:

public class SimpleTableModel extends JPanel implements ActionListener {
         static JButton b3;

         private static void mostraTela(){
                 b3=new JButton("Insere Exceção");
	 b3.addActionListener([color=red]this[/color]);
	 add(b3);
         }
         public static void main(String[] args) {
    	 mostraTela();
         }
         public void actionPerformed(ActionEvent e) {
                 if(e.getSource()==b3){}
         }
}

O erro está no “this”:Cannot use this in a static context…
Alguma idéia?

3 Respostas

victorwss

bruno_7317:
Meu código:

public class SimpleTableModel extends JPanel implements ActionListener {
         static JButton b3;

         private static void mostraTela(){
                 b3=new JButton("Insere Exceção");
	 b3.addActionListener([color=red]this[/color]);
	 add(b3);
         }
         public static void main(String[] args) {
    	 mostraTela();
         }
         public void actionPerformed(ActionEvent e) {
                 if(e.getSource()==b3){}
         }
}

O erro está no “this”:Cannot use this in a static context…
Alguma idéia?

Você sabe o que a palavra “static” significa?
Ela significa exatamente que você não pode usar “this”!

Tenta assim:

public class SimpleTableModel extends JPanel implements ActionListener {
    private JButton b3;

    private void mostraTela(){
        b3=new JButton("Insere Exceção");
        b3.addActionListener(this);
        add(b3);
    }

    public static void main(String[] args) {
        new SimpleTableModel().mostraTela();
    }

    public void actionPerformed(ActionEvent e) {
        if (e.getSource()==b3){}
    }
}
tecdanilo

Simples, this não pode ser usado em métodos estáticos, pois estes não fazem parte de um objeto instanciado. This é referente ao objeto instanciado.

bruno_7317

Valeu!
Eu sei que não pode usar this em static, só que não dava pra chamar o método no main…
ço meio ignorante ainda :roll:
Brigadão

Criado 18 de abril de 2008
Ultima resposta 18 de abr. de 2008
Respostas 3
Participantes 3