Preciso implementar um JDialog com o design pattern Singleton, porque preciso que o JDialog em questão seja instanciado apenas uma vez e essa instância esteja disponível em toda a aplicação, na verdade, eu já fiz a implementação do Singleton em outra classe e está certo, o problema/dúvida quanto a aplicar o Singleton à um JDialog é que neste eu preciso passar a ele o JFrame que será o “parent”, quero saber como fazer isso sem interferir no padrão Singleton.
publicenumSingletonDialog{INSTANCE;privateJDialogdialog;privateSingletonDialog(){dialog=newJDialog();}publicvoidshow(JFrameparent){// clear(dialog); // limpa os campos do dialog// dialog.pack(); // redimensionadialog.setLocationRelativeTo(parent);// centraliza no jframedialog.setVisible(true);}publicvoidclose(){dialog.setVisible(false);}publicvoiddispose(){dialog.dispose();}}
B
BugantiD
Olá diego12,
Obrigada pela resposta. Bom, me desculpe a ignorância, mas como ficaria para instanciar nesse caso e posteriormente para usar essa única instância para tornar o JDialog visível somente quando necessário?
Então, atualmente faço uso desta última que você citou, neste caso como eu deveria fazer para “passar” o JFrame para o JDialog mantendo o Singleton do jeito que implementei?
D
Solucao aceita
diego12
Praticamente igual:
publicclassSingletonDialog{privatestaticSingletonDialogINSTANCE;privateJDialogdialog;privateSingletonDialog(){dialog=newJDialog();}publicstaticSingletonDialoggetInstance(){returnINSTANCE==null?INSTANCE=newSingletonDialog():INSTANCE;}publicvoidshow(JFrameparent){// clear(dialog); // limpa os campos do dialog// dialog.pack(); // redimensionadialog.setLocationRelativeTo(parent);// centraliza no jframedialog.setVisible(true);}publicvoidclose(){dialog.setVisible(false);}publicvoiddispose(){dialog.dispose();}}
Se for um dialog próprio, faça assim que é melhor: