Alterar um objeto de uma classe estatica por um metodo não estático

7 respostas
B

Olá pessoal do GUJ,

Eu gostaria de estar alterando uma variavel estática em um método não estático.
O funcionamento é assim:
1 - A classe CommunSimul possui o main
2 - Ao clicar em um botão na interface da classe CommunSimul, ele instanciará um objeto do tipo UserGUI.
3 - O usuário entrará com o nome e outros dados.
4 - Ao clicar no butão da classe usuário o JTextField da classe CommunSimul deveria alterar o texto da caixa;

Aqui vai alguns trechos do código para clarear as coisas:

public class CommunSimul extends javax.swing.JFrame {

/** Creates new form CommunSimul */
public CommunSimul() {//construtor
    initComponents();
}

private void initComponents() {// interface gráfica
   (...)
     jtNome1 = new javax.swing.JTextField();
 }
 
 public static void main(String args[]) {
        
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            CommunSimul sim = new CommunSimul();
            sim.setVisible(true);
        }
    });
}

     //classe que executará a ação de alterar o valor do campo nome
   private void jbAddUser1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
    Usuario usr1 = new Usuario();
    usr1.setVisible(true);
    usr1.setNome(sim);//passei o objeto para alterar o valor da váriavel //nome;
}

}

//Função da classe usuário que irá alterar o jtextfield da classe //CommunSimul

public void setNome(CommunSimul s3)

{

s3.jtNome1.setText(bruno);

System.out.println(Alterando nome);

}

Alguem sabe como posso estar procedendo?

7 Respostas

ViniGodoy

Olá! E seja bem-vindo ao GUJ!

Em primeiríssimo lugar, sempre que postar código, não deixe de usar a tag code (você pode corrigir o seu post clicando em editar e seguindo as dicas desse tópico).

Para o que você quer fazer, não há necessidade de variáveis estáticas. Aliás, para praticamente nada existe necessidade de variáveis assim.

Dê uma olhada nesse exemplo e veja se ele resolve o seu problema.

B

:stuck_out_tongue: Cara…Absolutamente genial!!!

  1. hehehehe, nunca imaginei que a [color=red]solução[/color] chegaria [color=red]tão rápida[/color], fantástico :!:

[color=red]Obrigado pelas dicas sobre a formatação do texto[/color], percebi o quanto é difícil ler o texto sem qualquer formatação. Nos próximos posts estarei mais atento a isso.

:roll: Sobre o código que voce me passou, eu tive que comentar a linha de pacote, em todos os arquivos. Pois compilando sem comentar essa linha, aparecia uma mensagem de que a classe DlgAlterarDados não existia. Não entendi o porque.
[color=red]ps.: Eu extrai dentro de /Desktop (linux)[/color]

ViniGodoy

Estranho, mas o importante é que você conseguiu rodar o exemplo, certo?
Agora já viu como fazer telas diferentes comunicarem entre si. :wink:

fabim

Vini,

“Aliás, para praticamente nada existe necessidade de variáveis assim.”

Você estava dizendo que “praticamente nao se existe a necessidade de usar variaveis statics”, ou estava se referenciando só ao exemplo do colega?

ViniGodoy

Estava me referindo a variáveis estáticas mesmo.

Raramente elas são necessárias para alguma coisa.

fabim

E quando eu tenho um objeto que esta sendo usado por varios outros objetos, e eu preciso que qqer alteração nesse objeto seja visivel para todos os outros? como fazer isso sem static?

ViniGodoy

E por que tem que ser static?

Todos os outros objetos terão um atributo, não estático, que será uma referência ao objeto que todos enxergam.

Criado 11 de abril de 2007
Ultima resposta 12 de abr. de 2007
Respostas 7
Participantes 3