Evento swing

Supomos um campo de texto que vai até 3 letras ABC AB ou A.
Crio um evento KeyTyped nesse campo.
Toda vez que eu digitar ele inicia um método que possui declarado uma variável boolean x.
Neste método diz
se o tamanho for do texto for 2 x = true.
se o tamanho for do texto for 3 x = false.
Porém ocorre um erro que me obriga a inicializar a variavel x que vou inicializar como
x = false.
Analizado esse cenário tenho o seguinte resultado:
Se eu digitar duas letras x recebe true porém se eu apagar o valor volta a ser false pois está declarado como false.
Eu quero q o valor true seja mantido.
Declarar ele como uma variavel global x resolve esse problema mas eu queria não ter que declarar x como variavel global.

Não entendi qual é a dúvida. Se for no uso do evento, dá uma lida nisso: Java Swing Tutorial - Java KeyListener.keyTyped(KeyEvent e)

O que você entende por variável global?

Java não tem escopo global, o mais parecido com algo global seria declarar um atributo static, mas pro seu problema não acho correto.

Usa uma variável de instância.

Talvez eu tenho utilizado o temo errado. Vou exemplificar:

pacote x
classe teste{
//dentro da classe fora do construtor
  int x
    public class teste(){
//dentro da classe e do construtor
    int y
    }
    método usarInt(){
//dentro da classe e de um método
     int y
    }
    método usarInt2(){
     posso usar o valor x.
     não posso usar o valor y.
    }
}

o método se repete e se eu tiver uma variavel declarada o valor vai receber esse valor toda vez que a declaração for lida ex:

int x = 0;
x = x + 1;

eu quero que funcione como um for ex:

for(int i=0;i<5;i++){
x=i
}

o valor de declaração não afeta o resto das repetições.

Se a cada vez que o método for chamado você quer manter o valor que a variável tinha antes da chamada do método, então ela precisa ser declarada fora do método, precisa ser uma variável de instância.

Variáveis locais, declaradas dentro do método, são “apagadas” após a execução do método, por isso que precisam ser inicializadas.

1 curtida

Sim declarar fora do método foi oq quis dizer com variável global quero saber se tem alguma outra forma de solucionar.