Chamar método do JInternalFrame selecionado

3 respostas
F

Aí gurizada, é o seguinte: tenho uma aplicação onde adiciono vários JInternalFrames adicionando-os a um JDesktopPane, até aí tudo funcionando beleza, o que tá pegando é que em um determinado momento eu preciso pegar o frame selecionado e chamar um método dele, mas não estou conseguindo, já tentei de várias maneiras mas dá erro, abaixo coloco um pedaço do código:

desktop = new JDesktopPane();
this.setContentPane(desktop);

CriarQuestionario frame = new CriarQuestionario();
desktop.add(frame);

Essa parte funciona tranquilo, a janela é adicionada e aparece sem problemas, o problema é quando tento pegar a janela selecionada e chamar um método dela, tentei assim:

Vector Quest = desktop.getSelectedFrame().RetornaQuestionario();

Sendo que o RetornaQuestionario() é um método da classe CriarQuestionario que retorna um Vector.
Pergunto, o que estou fazendo de errado ?? qual a maneira correta de fazer isso.

[]s,

Fabrício.

3 Respostas

TedLoprao

Faltou o cast do desktop.getSelectedFrame().

Vector Quest = ((CriarQuestionario ) desktop.getSelectedFrame()).RetornaQuestionario();

fallow

brlima

desktop.getSelectedFrame() provavelmente retorna um JInternalFrame. A sua janela deve estar extendendo essa classe.
Logo, quando vc dá desktop.getSelectedFrame().seuMétodo, nao existe nenhum .seuMetodo no JInternalFrame, e sim na sua classe nova extendida. Dai sim vc tem q fazer um cast para sua classe, pra poder chamar seu método.

Imagina vc tem a classe Animal, e as classes Cachorro, Gato e Cavalo que estendem a classe Animal.
Voce tem uma Classe Zoo que contem diversoso Animais.
Voce tá chamando o método Zoo.getAnimal() e pedido pra latir(). QUem tem o método latir() é a classe Cachorro.

Cachorro dog1 = (Cachorro)Zoo.getAnimal();

É isso ai… Flw!

F

Funcionou, valeu !!!

[]s,

Fabrício.

Criado 27 de maio de 2004
Ultima resposta 27 de mai. de 2004
Respostas 3
Participantes 3