Quando eu chamo esse método por outros métodos dessa mesma classe , o campo muda direitinho …
Agora quando eu chamo esse método por métodos da outra classe o campo simplesmente não muda…
Eu já tentei mudar o modificador da váriavel para público e não funcionou …
Alguem saberia uma saída para essa sinuca?! :lol: obrigado desde já !
põe uma simplificação do cod ai pra gente ver.
acho que vc tá fazendo a declaração errado.
T
tiagoueg
cara vc vez os metodos set e get ?
public void setHora(String hora){
hora.setText(hora);
}
tenta assim pra ver se vai dar certo!
luizrosalba
Um pedaço do código :
A Classe numero 1 está assim:
packageteste;importjavax.swing.JOptionPane;publicclassRelogioextendsjavax.swing.JFrame{publicRelogio(){initComponents();}//Aplicar_confs é o nome de um botao que quando clicado , passa direitinho a hora para o JTEXTFIELDprivatevoidAplicar_ConfsActionPerformed(java.awt.event.ActionEventevt){//repassa para tela a horaSetHora();}publicvoidSetHora(){hora_branco.setText("Texto que eu quero que apareça");}publicstaticvoidmain(Stringargs[]){java.awt.EventQueue.invokeLater(newRunnable(){publicvoidrun(){newRelogio().setVisible(true);}});}publicjavax.swing.JTextFieldhora_branco;}
Até ai tudo bem , eu clico no botao e tudo funciona direitinho …
O PROBLEMA É QUANDO EU CHAMO O MÉTODO NA OUTRA CLASSE …
packageteste;importjavax.swing.JOptionPane;publicclassConfiguracaoJDialogextendsjavax.swing.JDialog{/** Creates new form ConfiguracaoJDialog */publicConfiguracaoJDialog(){initComponents();}privatevoidbotaoaplicarMouseClicked(java.awt.event.MouseEventevt){try{Relogiorelogio=newRelogio();relogio.SetHora();// esse cara deveria escrever no JTextField , mas não escreve ... PQ ?!!?!?!?!?}catch(Exceptionerro){JOptionPane.showMessageDialog(null,"Erro","Erro",JOptionPane.ERROR_MESSAGE);}dispose();//matando o Jframe}}
luizrosalba
Luiz Augusto Prado:
põe uma simplificação do cod ai pra gente ver.
acho que vc tá fazendo a declaração errado.
Acho que erro na declaração não é … o netbeans que faz a declaração por mim … :?
luizrosalba
Acho q estou conseguindo desvendar o problema …
Quando eu crio uma nova instância da classe relógio eu crio na verdade novas variáveis (no meu caso um novo JTEXTFIELD) de mesmo nome , com as mesmas características da classe original. Então alterar os valores nessa nova instância não altera os valores na instância anterior…
Agora a pergunta que vai resolver o meu problema ( Se for esse o problemas mesmo ehhe )
como alterar o valor do JtextField (sem faze-lo público) a partir de um classe de q não seja a classe que contém o JtextField?
Eu acho que usar set e get não vai rolar , pq para usa-los eu tenho que instanciar a classe que contém o jtextfield , logo criaria um NOVO jtextfield, o que não soluciona meu problema :
meucci
Cara teoricamente o que vc fez esta certo, mas ele realmente ira alterar o JText da instancia que vc criou
Relogio relogio = new Relogio(); relogio.SetHora();
Com isso vc esta se referindo a nova, o que vc pode fazer, se eu realmente endendi direito o que vc quer é tentar passar como parametro a instancia do objeto que vc quer apagar no lugar de criar um novo.
seus componentes todos podem ser private, mas o para o que vc quer mudar vai precisar de um metodo public.
se seu metodo for public, a chamada deste método muda o conteudo de seu componente mesmo que ele seja private.
S
sene
Não é isso que você está querendo?
private static javax.swing.JTextField hora_branco;
public void SetHora()
{
Relogio.hora_branco.setText("Texto que eu quero que apareça");
}
luizrosalba
tive uma sacada que resolveu o problema mas empobreceu o programa…
eu chamo primeiro a classe das configuração , e só quando ela tiver terminada é que eu construo a classe do relógio , assim evita eu ter que ficar passando parâmetros para uma instância que já existe, pois eu crio a instância do relógio na hora me que eu vou precisar dela …