Problemas con Patron de diseño Singleton en app. MDI
Publicado por McCubo (2 intervenciones) el 30/05/2011 19:38:37
Hola y y desde ya muchas gracias por darte tiempo de leer este tema.
El problema es el siguente:
Tengo una app. MDI con algunos JinternalFrames los cuales son llamados desde una JMenuBar, mi intencion es que cada internalFrame solo pueda poseer una instancia de clase a la vez. por lo cual he leido un poco acerca del patron de diseño Singleton el cual me ha funcionado bastante bien, porque cuando una instancia de JinternalFrame esta hecha no me deja tener una nueva instancia de la misma.
El problema radica que cuando tengo un JInternalframe instanciado e intento instanciarlo denuevo el JinternalFrame se congela y se desbloquea hasta que vuelvo a querer llamarlo (desde la Opcion del JMenu).
pongo una porcion de codigo para ser mas explicativo:
public class OptionFrame extends JInternalFrame
public static OptionFrame optionInstance = new OptionFrame();
public static OptionFrame getInstance(){
return optionInstance;
}
/** Creates new form OptionFrame */
private OptionFrame() {
initComponents();
todasMisAcciones();
}
y esa clase la intento llamar desde un ActionListener de un JMenuItem, asi:
subMenuOption.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
OptionFrame optionFrame = OptionFrame.getInstance();
optionFrame.setVisible(true);
optionFrame.setSelected(true);
jdesktopPane.add(optionFrame);
} catch (PropertyVetoException ex) {
logger.debug(ex);
}
}
});
La primera vez que se ejecuta el Listener del JMenuItem, todo bien, pero la segunda vez, el InternalFrame se me congela y tengo que ejecutar denuevo el Listener que manda a llamar al InternalFrame.
y me tira la Siguente exception:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: illegal component position
Seguire leyendo un poco a ver si encuentro solucion, pero igual Muchas gracias de antemano a alguna sugerencia del porque el posible error

El problema es el siguente:
Tengo una app. MDI con algunos JinternalFrames los cuales son llamados desde una JMenuBar, mi intencion es que cada internalFrame solo pueda poseer una instancia de clase a la vez. por lo cual he leido un poco acerca del patron de diseño Singleton el cual me ha funcionado bastante bien, porque cuando una instancia de JinternalFrame esta hecha no me deja tener una nueva instancia de la misma.
El problema radica que cuando tengo un JInternalframe instanciado e intento instanciarlo denuevo el JinternalFrame se congela y se desbloquea hasta que vuelvo a querer llamarlo (desde la Opcion del JMenu).
pongo una porcion de codigo para ser mas explicativo:
public class OptionFrame extends JInternalFrame
public static OptionFrame optionInstance = new OptionFrame();
public static OptionFrame getInstance(){
return optionInstance;
}
/** Creates new form OptionFrame */
private OptionFrame() {
initComponents();
todasMisAcciones();
}
y esa clase la intento llamar desde un ActionListener de un JMenuItem, asi:
subMenuOption.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
OptionFrame optionFrame = OptionFrame.getInstance();
optionFrame.setVisible(true);
optionFrame.setSelected(true);
jdesktopPane.add(optionFrame);
} catch (PropertyVetoException ex) {
logger.debug(ex);
}
}
});
La primera vez que se ejecuta el Listener del JMenuItem, todo bien, pero la segunda vez, el InternalFrame se me congela y tengo que ejecutar denuevo el Listener que manda a llamar al InternalFrame.
y me tira la Siguente exception:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: illegal component position
Seguire leyendo un poco a ver si encuentro solucion, pero igual Muchas gracias de antemano a alguna sugerencia del porque el posible error

Valora esta pregunta


0