Inicializar array com o clique de um botão

4 respostas
Flavio05

Tendo o seguinte fragmento…

public String[] tela(){
     // [...]
     String[] s;
     botao = new JButton();

     botao.addActionListener(new ActionListener(){
          @Override
          public void actionPerformed(ActionEvent e){
               s = {"string1", "string2"};
          }
     });

     return s; // Neste caso, será lançado um erro, pois o array "s" não foi inicializado.
}

A dúvida é: No exemplo acima, como inicializar o array “s” após o clique do botão?
Pensei em colocar o return dentro do actionListener, mas este seria considerado como o retorno do método actionPerformed, que na verdade não retorna nada.

4 Respostas

D

Você está esquecendo de inicializa-la, tente assim:

s = new String [] {"string1", "string2"};
Flavio05

[quote=dudis_royer]Você está esquecendo de inicializa-la, tente assim:

s = new String [] {"string1", "string2"};

Agora, um detalhe que acabei não inserindo no tópico…
Ao clicar no botão, será inicializado o array (até aí tudo bem), mas após inicializado, também quero utilizar este array como retorno do método, pois este método retorna justamente um array de Strings.
Como fazer isso?

E

O seu problema é conceitual, porque você não entendeu como é que se faz a programação orientada a eventos.

Você está pensando que, ao chamar o método tela() (que retorna um array de strings), você vai ficar parado nesse método esperando uma alma gentil e caridosa clicar o seu botão, para retornar o tal array de strings.

Se quiser fazer esse tipo de coisas, normalmente se cria um diálogo modal que tem um botão cujo evento seta um array de strings que é um membro de instância desse diálogo, e esse diálogo modal pode ter um método que retorna o tal array de strings. É mais fácil mostrar que dizer, mas estou sem tempo de escrever um exemplo agora.

Flavio05

entanglement:
O seu problema é conceitual, porque você não entendeu como é que se faz a programação orientada a eventos.

Você está pensando que, ao chamar o método tela() (que retorna um array de strings), você vai ficar parado nesse método esperando uma alma gentil e caridosa clicar o seu botão, para retornar o tal array de strings.

Se quiser fazer esse tipo de coisas, normalmente se cria um diálogo modal que tem um botão cujo evento seta um array de strings que é um membro de instância desse diálogo, e esse diálogo modal pode ter um método que retorna o tal array de strings. É mais fácil mostrar que dizer, mas estou sem tempo de escrever um exemplo agora.

Para falar a verdade, eu não diria que não entendi esta tal programação orientada a eventos, na verdade ainda não ouvi falar nela. Ou pelo menos não de modo tão tosco.

E neste caso, o clique no botão é inevitável, pois (não coloquei neste exemplo, pois aparentemente não era necessário) este método na verdade cria uma pequena janela, onde há dois campos, de texto e senha, e um botão. Onde ao clicar neste botão será retornado este array de String com os valores dos dois campos. Mais ou menos como um JOptionPane.showInputDialog(), que recebe um texto e ao clicar no botão retorna este texto.

Mas quando puder, manda um exemplo!!

Criado 3 de maio de 2013
Ultima resposta 3 de mai. de 2013
Respostas 4
Participantes 3