JLabel nao esta atualizando por uma outra classe

ola a todos !

estou com o problema: o JLabel nao esta atualizando por outra classe (o q sera q estou fazendo errado?) segue o codigo:

primeira classe:

package Testes;

import javax.swing.JDialog;
import javax.swing.JLabel;

public class Classe1 extends JDialog{
    JLabel oTexto;

    public void Classe1() {
        setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
        setTitle("Teste.");
        setSize(400,350);

        getContentPane().setLayout(null);

        oTexto = new JLabel("inicio") ;
        oTexto.setBounds(20,20,100,25);

        getContentPane().add(oTexto);

        SubClasse1();

    }

    public void SubClasse1(){

        oTexto.setText("1111"); // faz certo.
        SubClasse2("222");      // tambem fa certo.

        Classe2 oClasse2= new Classe2();
        oClasse2.SubClasse2();
    }

    public void SubClasse2(String wTexto){
        oTexto.setText(wTexto);
    }

    public static void main(String args[]) {
        JDialog oDialog = new Classe1();
        oDialog.setVisible(true);
   }
}

segunda classe:

package outroTestes;

class Classe2 {

    public void Classe2(){
    }

    public void SubClasse2(){
        Classe1 oClasse2= new Classe1();
        oClasse2.oTexto.setText("3333"); // assim nao faz.

        oClasse2.SubClasse2("444");      // assim tambem nao faz.
    }
}

desde ja agradeco: MUITO OBRIGADO !!!

alguma dica ???

obrigado !

Você mandou a “Classe1” herda tudo de “JDialog”, porém na hora que você criou o objeto da “Classe1” você usou como tipo do objeto a classe “JDialog” coisa que não podia ser feita visto que você fez um método chamado “Classe1” (na verdade acho que você queria usar construtor mas deve ter se confudido) que traz todas as configurações que você queria aplicar na classe.

Você deve fazer as seguintes modificações na Classe1:

Troque

JDialog oDialog = new Classe1();

Por:

Classe1 oDialog = new Classe1();

e no método main depois de criar o objeto chame o método que você fez para configurá-lo:

oDialog.Classe1();

Dessa maneira você consiguirá usar o método que configura seu objeto.

Depois disso comente as seguintes linhas:

Classe2 oClasse2= new Classe2();   
oClasse2.SubClasse2();

Comentando essas linhas o programa não irá gerar mais nenhum erro.

Pelo visto você deve ta aprendendo OO certo? Essas linhas que pedi para você comentar se você for ver bem a primeira cria um objeto da “Classe2” e a segunda chama o método SubClasse2() e esse método cria um objeto da “Classe1” e tenta nesse novo objeto (que eh uma instacia da “Classe1”) modíficar o atributo "oTexto"

Acho que quando você entender melhor o conceito de OO você vai entender o você fez e queria fazer ai hehe…

Qualquer coisa posta ai.

Abraço.

na verdade esta fazendo… .soh nao esta atualizando…

...
JLabel wTProgre;  // criando 1 (esta na CLASSE 1)
...
        // criando 2 (esta na CLASSE 1)
        wTProgre = new JLabel("") ;
        wTProgre.setFont( new Font("Tahoma", 0 , 12));
        wTProgre.setBounds(105,230,320,25);

// mandando um novo texto (esta na CLASSE 2) AcessoUsu oAcessoUsu = new AcessoUsu(); oAcessoUsu.AtualDescProgres("Analisando a Tabela "+wNomTab);

   // pegando o novo texto (esta na CLASSE 1) 
   public void AtualDescProgres(String wTexto){   
        wTProgre.setText(wTexto); // atualizando...
        wTProgre.repaint();   // refreshando...
        
        JOptionPane.showMessageDialog(null,wTexto+"  <=>  "+wTProgre.getText());

    }

mas nao atualiza o wTProgre do “criando 2”.

se alguem puder me ajudar, fico muito agradecido !

obrigado

alguma dica ???

obrigado !

Fala cara!

Acho que a questao eh o seguinte: Encapsulamento.

Voce deve ter visto que existem 4 tipos de encapsulamento:
public, private, protected e package.

Para usar os 3 primeiros, vc especifica usando a palavra antes
da propriedade/metodo, algo como:
private JLabel rotulo;
public void testa() {} ;

Quando vc nao define isso, assume-se o encapsulamento “package”, que
restringe o acesso ao elemento a classes que pertencam a mesma package.

No seu exemplo, vc criou duas classes, em package’s diferentes.
para poder acessar a primeira, vc pode fazer duas coisas:

1 -> Definir JLabel como public [nao-recomendavel]

public JLabel oTexto;

2-> Criar um set/get pra setar/recuperar o valor do JLabel.

private JLabel oTexto; // Eh bom deixar private por seguranca.
... 
public void setTexto(String pTexto){
    this.oTexto.setText(pTexto);
}
public String getTexto(){
   return this.oTexto.getText();
}

Com isso, na outra classe, vc pode chamar o metodo:
[instancia].setTexto(“TESTANDO…”);

Falei, falei, falei e nao sei se disse alguma q preste…
=)
Qualquer coisa, grita ae!
Abraco!

olha… esta tudo certinho como vc disse… mas nao atualiza (inclusive mostra no preenchimento da escrita da sintaxe)

o q poderia ser ?

muito obrigado !!!

Up !!!