Eu de novo com duvidas em JInternalFrame !!! Hehehe !!!
Para que um JInternalFrame abra uma única vez me disseram que deveria usar Singleton. Mas o que é isso e como posso usar isso ???
Se possivel me mandem um exemplo. Desde ja agradeço !!!
Eu de novo com duvidas em JInternalFrame !!! Hehehe !!!
Para que um JInternalFrame abra uma única vez me disseram que deveria usar Singleton. Mas o que é isso e como posso usar isso ???
Se possivel me mandem um exemplo. Desde ja agradeço !!!
Implementação…
public class MinhaClasse {
private static MinhaClasse minhaClasse = null;
private MinhaClasse() {
}
public static synchronized MinhaClasse getInstance() {
if (minhaClasse == null) {
minhaClasse = new MinhaClasse();
}
return minhaClasse;
}
public void testeSingleton() {
System.out.println("Teste Singleton!");
}
}
Para utilizar a instância:
minhaClasse.getInstance().testeSingleton();
Singleton eh um padrao que dita que haverá apenas uma instancia de determinado objeto em sua aplicacao.
Normalmente eh feito mais ou menos assim:
public class SingletonFrame extends JInternalFrame{
private static final SingletonFrame INSTANCIA;
//BLOCO DE CODIGO STATIC , SOH EH EXECUTADO UMA VEZ
static{
INSTANCIA = new SingletonFrame();
}
//CONSTRUTOR PRIVADO
private SingletonFrame(){
}
public static SingletonFrame getInstance(){
return INSTANCIA;
}
}
Deste modo para acessar a instancia vc deve utilizar SingletonFrame.getInstance() e isto sempre ira retornar a mesma instancia…
note que o construtor padrao é privado , nao permite vc fazer em outro codigo new SingletonFrame()
Vc precisara adpatra os construtores para o seu caso mas acho q deu pra entender,…
qq coisa eh soh postar msg
Abraços
Uma vez eu fiz isso da seguinte maneira pegava a instancia q eu tinha do internalframe e testava pra ver se ela estava visivel dai se sim nao fazia nada se nao abria o internalframe. Veja na api, mas o método eu acho q é isVisible(); ( meio óbvio mas como faz tempo, confirme lá ).
como eu posso pegar essa instancia ???
qnd vc vai abrir o internalframe no desktoppane vc tem q fazer
meuDesktopPane.add( meuIF );
e depois meuIF.show();
certo ?!
antes de fazer meuIF.show(); ou meuIF.setVisible( true );
if ( !meuIF.isVisible() )
meuIF.setVisible( true );