Atualizar Instancias

3 respostas
V

O problema que enfrento é o seguinte como faço para sempre manter minhas instâncias atualizadas para um método por exemplo de leitura de um jtextfield saber o que eu escrevi lá…

vou dá um problema de exemplo: tenho uma interface de login que é executada em ControlePrincipal, já em controlePrincipal ele chama controleLogin que trata o que foi digitado na interface e retorna true ou false para controlePrincipal validar, sendo que esse controlelogin não consegue ler o que está escrito no jtextfield e não sei porque. vou colocar o código abaixo

-----------------ControlelLogin--------------------

public class ControleLogin

{

PainelLogin login = new PainelLogin();
public static boolean confirmacao = false;
public void confirmaLogin()

{

String tsenha = login.getBcampo2().getText().toLowerCase().trim();

String tlogin = login.getBcampo().getText().toLowerCase().trim();
if (tlogin.equals("vitor") && tsenha.equals("evoluir"))
    {
        confirmacao = true;
        System.out.println("login certo");
    }
    else
    {
        JOptionPane.showMessageDialog(login.getBconfirma(),"Login ou senha incorretos", "Erro no login",
                JOptionPane.ERROR_MESSAGE);
        login.getBcampo().setText("");
       login.getBcampo2().setText("");
    }
    
}

}

--------------ControlePrincipal----------------------------------

.

.

.

public void actionPerformed(ActionEvent e)

{

//----------Inicio Botões Login

if(e.getSource() == princ.getJBotaoLogin())

{

login.show();

//chama o login

}
if(e.getSource() == login.getBconfirma()) // serve para confirmar login e senha
      {

        ContLog.confirmaLogin();
         //chama o método da classe ControleLogin para validar o login
        
        if(ContLog.confirmacao == true)
        {
            login.dispose();
       //fecha janela de login
            princ.setVisible(false);
          //fecha a janela principal
            menuPrinc.show();
         //validado o login abre o método acima abre a janela de menu
        }
      }

.
.
.

3 Respostas

V

dica:

crie uma classe tipo monitor que mantenha as principais variáveis/propriedades com acesso sincronizado de escrita, mantenha-a como singleton e passe a referência dela para os objetos que precisem acessar as propriedades da aplicação.

V

dica:

crie uma classe tipo monitor que mantenha as principais variáveis/propriedades com acesso sincronizado de escrita, mantenha-a como singleton e passe a referência dela para os objetos que precisem acessar as propriedades da aplicação.

???

Henrique como posso fazer isso???

V

Bom, pra fazer isso vc vai precisar estudar um pouco os conceitos de como funciona a concorrência de acesso em Java. A definição de monitor é a seguinte:

“MONITORES: SÃO MECANISMOS DE ALTO NÍVEL PARA SINCRONIZAÇÃO E INTERCOMUNICAÇÃO DE PROCESSOS, DE FÁCIL UTILIZAÇÃO, QUE IMPÕEM UMA ESTRUTURAÇÃO AOS PROGRAMAS CONCORRENTES QUE OS UTILIZAM.
PODE SER VISTO COMO UM BLOCO CONTENDO INTERNAMENTE DADOS LOCAIS E PROCEDIMENTOS PARA MANIPULAR ESSES DADOS.
OS DADOS DECLARADOS DENTRO DE UM MONITOR SÓ SÃO ACESSÍVEIS ATRAVÉS DOS PROCEDIMENTOS DO PRÓPRIO MONITOR. ESSES PROCEDIMENTOS SÃO EXECUTADOS DE FORMA MUTUALMENTE EXCLUSIVA, QUANDO CHAMADOS PELOS PROCESSOS QUE O UTILIZA. UM MONITOR GARANTE, PORTANTO, EXCLUSÃO MÚTUA NA MANIPULAÇÃO DE SEUS DADOS.”
(Retirado de http://www.inf.ufsc.br/~mazza/monitores.ppt )

Na prática, um monitor é uma classe java que todos os seus atributos são private e os métodos para acesso a estes atributos são synchronized.

O padrão Singleton é bem simples e garante que vc terá somente uma instância de determinada classe (objeto) para todo um ambiente. No site da Sun tem exemplos de como implementar esse padrão.

Então, para fazer o que vc quer, vc precisa primeiro criar uma classe monitor contendo as propriedades relevantes da tua aplicação e obter a instância única desta classe quando fores verificar as propriedades da tua aplicação ou passar a referência para esta instância aos objetos que forem acessar as propriedades.

Espero ter esclarecido um pouco mais a minha idéia. :idea:

Criado 27 de fevereiro de 2005
Ultima resposta 1 de mar. de 2005
Respostas 3
Participantes 2