[non-static method e static context] como corrijo isso?

5 respostas
romulo00

Boa noite galere…

To fazendo um prog pra faculdade… mas o seguinte…

Tenho um jInternalFrame dentro de um desktop…
Esse JIF abre mais um, mas não está aparecendo…
eu sei q preciso adiciona-lo ao desktop e por isso não está aparecendo…

Os itens jInternal[Condutor], jInternal[form] e o desktop q está no main estão cada um em uma classe separada da outra…

A chamada do 1º jInternal no desktop funcionol legal…

fiz um método, provavelmente sem necessidade, tentando evitar o erro q estou tendo:

public void addDesktop(JInternalFrame janela){ // este método está na tela principal do prog. Desktop.add(janela); //Desktop é o nome do jDesktopPane }

um botão no [Condutor] vai chamar o [form], mas aparece o erro em:

//isto está no método do evento de botão dentro do jif[Condutor] e vai chamar o jif[Form] FormCondutores form = new FormCondutores(); //TelaPrincipal.centraliza(form); << nestes métodos ocorre non-static method can't be referenced from a static content //TelaPrincipal.addDesktop(form); << form.setVisible(true);

Alguém ja passou por isso e sabe como posso resolver isso? (se é que há como) :roll:

Agradeço a ajuda pessoal!! :smiley:

EDIT: Tbm tentei colocar um static no método addDestop() mas aí ele da o erro por causa da variável Desktop

5 Respostas

marcos1EM

Pesquise sobre o que são métodos do tipo static para entender como resolver este problema.

Veja: http://www.guj.com.br/articles/121

romarcio

Pelo que parece você tem uma classe chamada: TelaPrincipal
E nessa classe tem o método: centraliza()

Se esse método é marcado como static, então você faz a chamada a ele assim: TelaPrincipal.centraliza(form)
Se ele não é marcado como static, então você faz a chamada a ele assim: new TelaPrincipal().centraliza(form)

romulo00

valeu pelas dicas…

vou tentar a sua romarcio…

marcos1EM, eu sabia mais ou menos o pq estava dando o erro… mas o artigo foi bastante util…
a minha dúvida maior é se haveria como corrigir o problema…

se o que o romarcio falou não der certo… vai ser só mudar a variavel desktop pra static e boa
só preciso dar uma fuçada no netbeans pra ver onde consigo mudar os acessos das variáveis que ele vai criando automaticamente…

novamente, valeu pela ajuda…
graças a isso não vo precisar desistir do JInternalFrame… :smiley:

JhowTroMundo

Não funcionou pq vc não atribuiu a instancia a uma variável. Simplesmente criou a tela e deixou ela lá na memória (new TelaPrincipal():wink:

Tente TelaPrincipal telaPrincipal = new TelaPrincipal();

e passe a usar telaPrincipal pra chamar os metodos (telaPrincipal.metodoNaoEstatico).

Tome cuidado ao utilizar métodos estáticos quando estiver usando várias instâncias da mesma classe.

romulo00

Valeu a dica…
mais uma anotada…

quanto a várias instâncias eu estou usando singleton…
Li aqui mesmo no forum e pareceu bastante util…

Coloquei na minha aplicação e está funcionando lindamente…
O forum tá demais… to aprendendo diversas mnhas q nenhum professor comentou antes…

na verdade to utilizando o forum como um professor mesmo… e tá funcionando muito além do que eu imaginava…
ta cheio de coisa interessante nele… :thumbup:

valeu a ajuda pessoal! :mrgreen:

Criado 20 de maio de 2011
Ultima resposta 21 de mai. de 2011
Respostas 5
Participantes 4