Singleton + Reflection + JInternalFrame [RESOLVIDO]

7 respostas
M

Boa tarde :smiley:

Tô fazendo um sistema em que para instanciar os objetos eu uso reflection até aqui tudo bem consigo instanciá-los. O Meu problema é que estou usando JInternalFrame e não posso deixar o frame abrir mais de uma vez.

Eu li algo sobre um pattern singleton, até entendi como funciona, eu só não sei como instanciar um JInternalFrame usando singleton e reflection.

Se alguém souber e puder me ajudar fico grato :smiley: Ou então se alguém tem alguma outra idéia de como criar uma instancia única para cada JInternalFrame, lembrando que estou usando reflection.

7 Respostas

D

Bem… não entendi direito, mas se você entendeu como funciona o pattern Singleton e como funciona a API Reflection, é só você chamar o método singleton que você criou através de reflection e ser feliz! =D

Espero ter ajudado. Até.

M

Ah sim, isso eu já sabia hehe… mas como eu chamo e adiciono no jDesktopPane? Isso que eu não consigo fazer :X

71C4700

Da uma olhada se resolve teu problema

public void addInternal(JInternalFrame frameInterno) { boolean temp = false; try { for (JInternalFrame frame : jDesktopPane1.getAllFrames()) { frame.setIcon(true); if (frame.getClass() == frameInterno.getClass()) { temp = true; frame.setIcon(false); frame.setSelected(true); } } } catch (PropertyVetoException ex) { Logger.getLogger(Application.class.getName()).log(Level.SEVERE, null, ex); } if (!temp) { frameInterno.setVisible(true); jDesktopPane1.add(frameInterno, JLayeredPane.MODAL_LAYER); jDesktopPane1.setSelectedFrame(frameInterno); } }

Abraços…

M

71C4700:
Da uma olhada se resolve teu problema

public void addInternal(JInternalFrame frameInterno) { boolean temp = false; try { for (JInternalFrame frame : jDesktopPane1.getAllFrames()) { frame.setIcon(true); if (frame.getClass() == frameInterno.getClass()) { temp = true; frame.setIcon(false); frame.setSelected(true); } } } catch (PropertyVetoException ex) { Logger.getLogger(Application.class.getName()).log(Level.SEVERE, null, ex); } if (!temp) { frameInterno.setVisible(true); jDesktopPane1.add(frameInterno, JLayeredPane.MODAL_LAYER); jDesktopPane1.setSelectedFrame(frameInterno); } }

Abraços…

Obrigado :slight_smile:

Mas eu já tenho algo parecido com isso, o que eu não sei é como instanciar um singleton usando reflection.

M

alguém? :slight_smile:

71C4700

Markin1, fiz um teste e funcionou aqui…

Vê se funciona da maneira que vc quer…

M

71C4700!! Cara valeu mesmo era isso que eu tava tentando fazer. Meu problema era o metodo instance, tava errando na hora do invoke.

Obrigado :smiley:

Criado 16 de abril de 2009
Ultima resposta 20 de abr. de 2009
Respostas 7
Participantes 3