Mudar variável quando o JInternalFrame

5 respostas
Soulless-BR

Fala pessoal, tudo beleza?

Olha eu aqui outra vez com o JInternalFrame… Só pra entenderem eu estou com um JFrame + um DesktopPane onde será adicionado os JInternalFrames… Eu instancio a classe do JInternalFrame e dou um setVisible pra ele aparecer, normal… Quando eu fecho o JInternalFrame eu gostaria de mudar uma variavel que tenho na classe do JFrame…

Não to sonseguindo isso… rsss… Alguem pode me dar uma luz?

Obrigado.
Abraços.

5 Respostas

Nicolas_Fernandes

Olá!

Poste o seu código e poste exatamente o que você quer que seja feito, para que tenhamos como opinar!
Abraços!

Soulless-BR

Nicolas Fernandes:
Olá!

Poste o seu código e poste exatamente o que você quer que seja feito, para que tenhamos como opinar!
Abraços!

Obrigado amigo, mas já consegui resolver. Não sei se é a melhor maneira, porém, eu deixei a variável da classe principal como static, assim eu consigo acessar ela da classe secundária.

Vou montar um método Set pra ela…

Abraços e obrigado.

ViniGodoy

Usar static é a pior maneira de resolver.
Primeiro, pq vc expõe uma variável da sua classe.
Depois, pq vc faz isso de maneira global. Terceiro, pq statics não são coletados da memória.

Geralmente, comunicações assim são feitas através de JDialogs:
http://www.guj.com.br/posts/list/55710.java#292687

Se não quiser fazer uma JDialog, faça o seu JInternalFrame guardar uma referência ao JFrame. E, ao fechar a internal frame, chame um método no seu JFrame. Você pode passar o JFrame em questão como parâmetro, no construtor do seu JInternalFrame.

A idéia é mais ou menos essa (considere que o método fechar é chamado pelo seu evento internalFrameClosing):
public SeuInternalFrame extends JInternalFrame {
    private SeuFrame frame;

    public SeuInternalFrame(SeuFrame frame) {
        this.frame = frame;
        //resto do seu construtor aqui
    }

    public void fechar() {
        dispose();
        frame.alterarValor(10);
    }
}
Soulless-BR

Entendi ViniGodoy, eu não sabia que variáveis do tipo static não eram coletadas da memória. Ai complica heim! Desculpe a minha ignorância, mas e sobre os métodos estáticos que contenham variáveis? Acabam caindo nessa regra do coletor também?

Vou seguir o seu conselho cara, mudarei passando a referencia e deixarei a variável como private…

Abraços.

ViniGodoy

Variáveis criadas dentro de métodos estáticos tem o escopo do método. Aí tudo bem.

O problema são as propriedades estatic. Elas tem o escopo da classe, e como classes existem até que a VM seja coletada, elas nunca são coletadas. São a principal causa de memory leaks.

Criado 13 de setembro de 2010
Ultima resposta 14 de set. de 2010
Respostas 5
Participantes 3