Estou começando a estudar Java e já tive muitas duvidas a maioria delas consegui achar resposta aqui no fórum.
So que desta vês não achei nada eu tenho o seguinte ambiente.:
Tem uma aplicação com 2 Jframes e uma classe que coloca um icone no Systray.
Inicio a aplicação instanciando meu forme principal numa classe main.
NewJFrame telainicial = new NewJFrame();
telainicial.setVisible(true);
No meu forme principal tenho um jButton que eu chamo uma classe que coloca um icone no systray
Faço da seguinte forma.
TestTray eu = new TestTray(); // instancia a classe que contem um construtor que inicia a mesma e coloca o incone na Systray
this.setDefaultCloseOperation(1);
this.dispose(); // saio com o formulário de sena o forma poderia ser hide também.
Agora meu problema.
Na classe systray eu chamou novamente o formulário NewJFrame so que eu não queria ter que instancialo novamente e abrilo como se fosse um novo forme eu queria usar meu objeto telainicial dentro da classe systray … teria como ???
Singleton é o caminho
Dê uma pesquisada sobre o padrão para ficar com base, ai vai um código de exemplo:
public class MyFrame extends JFrame {
public static MyFrame frame;
private MyFrame() {
}
public static MyFrame getInstance() {
if(frame == null) {
frame = new MyFrame();
}
return frame;
}
}
Note que você não vai mais chamar o new para pegar uma instância do seu frame… Ao invés disse você vai chamar o método getInstance, que vai assegurar que apenas uma instância da classe seja criada.