galera, boa noite, tem como passar os dados de uma tela para outra sem ter que fazer a tela anterior abrir e tal ?
explicar melhor: eu tenho a tela A, e eu tenho um botão que, ao clicar nele, abre a tela B, e dentro da tabela B, eu vou selecionar o nome do cliente e tal, ai eu quero que essa tela feche e o nome selecionado na tela B, passe para a tela A.
Até o momendo, só consigo fazer passar e uma tela para outra, se a tela B fazer a tela A abrir, e não quando ela já está aberta.
no momento, estou usando esse código, mas não está indo como eu quero.
if (id_user == null) {
id_user = new add_carro(null, rootPaneCheckingEnabled);
id_user.get_id(id);
id_user.setVisible(true);
} else {
id_user.get_id(id);
id_user.setVisible(true);
//id_user.setState(WIDTH);
}
void get_nome(String n){
mostrar_cliente.setText(n);
if(!mostrar_cliente.getText().equals("")){
cliente.setVisible(false);
}
}
Alguém pode me falar como posso fazer isso dar certo ?
Se as duas telas precisam “conversar entre si” então uma tem que ter referência para a outra.
Galera, eu já resolvi, e foi bem simples mesmo.
Eu criei uma classe somente para armazenar esse valores que eu queria que as outras classe e telas lessem também.
na classe Valores:
private static String nome;
Dessa forma, pode fazer os getters e setters sem problemas que, quando uma tela ou classe registrar um valor nessa String nome, só vai resetar se tu colocar uma instrução de reset em quem vai ler ela, senão, enquanto o sistema ficar ligado (ou outra classe ou tela cadastrar um valor encima), ela vai permanecer com esse valor.
A instrução que eu uso para o reset é assim:
valores v = new valores();
v.setNome(null);
Valeu a ajuda ai pessoal.
Você está instanciando uma classe para setar atributos estáticos?
Não faz sentido.
Porque não faz suas telas trocarem mensagens entre si, como qualquer programa orientado a objetos?
Porque eu tentei de muitas formas diferentes, e tipo, para não ficar chamando uma tela dentro da outra, fiz isso e até o momento está funcionando perfeitamente.
Ou seja, você não quer utilizar POO, já que não quer que objetos troquem mensagens entre si.
Poise, eu já tentei POO infinitas vezes, mas a o que se tornava o problema era que, assim que a classe acabava de ser usada, todos os valores resetavam e quando iria ser usada por outra classe ou janela, já não existia mais o valor posto, e isso atrapalhava muito. Então, eu tinha que ter algo em que os valores permanecessem lá até serem apagados ou serem usados por outra classe.
Isso acontecia pois provavelmente você estava criando um novo objeto da classe ao invés de reutilizar a instância que já havia criado.
Vejo que é um problema muito comum entre quem está iniciando, não está claro como fazer objetos trocarem mensagens entre si, aí usam atributos estáticos de forma equivocada.
Basicamente o que você teria que fazer era isso:
class TelaA { // classe da TelaA
private TelaB telaB; // esta classe vai conversar com a TelaB
public void setTelaB(TelaB telaB) { // recebe uma referência da TelaB
this.telaB = telaB
}
}
class TelaB { // classe da TelaB
private TelaA telaA; // esta classe vai conversar com a TelaA
public void setTelaA(TelaA telaA) { // recebe uma referência da TelaA
this.telaA = telaA
}
}
class MeuSistema { // classe principal do meu sistema
private TelaA telaA; // variável de instância da TelaA
private TelaA telaB; // variável de instância da TelaB
MeuSistema() { // construtor da minha classe principal
telaA = new TelaA(); // inicializo a TelaA
telaB = new TelaB(); // inicializo a TelaB
telaA.setTelaB(telaB); // se a TelaA precisa conversar com a TelaB, ela precisa receber uma referência da TelaB
telaB.setTelaA(telaA); // se a TelaB precisa conversar com a TelaA, ela precisa receber uma referência da TelaA
}
}