Boa tarde a todos, estou corrigindo uns bugs do sistema que estou fazendo para um trabalho da faculdade e um deles não estou conseguindo revolver, já pesquisei bastante e não achei nada que desse um jeito nisso.
Segue o código que inicia o form :
// Chama tela de serviço com OS no numero
if (telaServico == null) {
telaServico = new TelaServico();
telaServico.gerarNumeroServico(); //método de criar o numero da ordem de serviço
TelaServico.txtStatus.setText("Aberto");
TelaServico.txtUsuarioNovoServico.setText(lblUsuario.getText());
TelaServico.PK_usuario.setText(txtPKUsuarioLogado.getText());
if (telaServico.isIcon()) {
try {
telaServico.setIcon(false);
} catch (PropertyVetoException ex) {
Logger.getLogger(TelaSelecaoServico.class.getName()).log(Level.SEVERE, null, ex);
}
} else {
telaServico.toFront();
}
}
AdminIFrame.mostrarJanela(TelaSistema.Desktop, telaServico);
Código do método (mostrar janela) que adiciona o form no Desktop:
public static void mostrarJanela(JDesktopPane dp,JInternalFrame janela){
if(janela !=null && !janela.isShowing()){
janela.show();
dp.remove(janela);
try {
dp.add(janela, JLayeredPane.DEFAULT_LAYER);
} catch (IllegalArgumentException ex) {
dp.add(janela, JLayeredPane.DEFAULT_LAYER);
}
}
if(janela == null){
dp.add(janela, JLayeredPane.DEFAULT_LAYER);
}
ativarJanela(dp, janela);
}
Ele ta funcionando ok ao que diz respeito a não abrir outro form igual. O problema é se eu abro 1, minimizo ele e abro outro, se eu só fechar ok Nada acontece e não tem nenhum form no Desktop mas se eu minimizo de novo ele trava o sistema todo e solta exception :
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: illegal component position
at java.awt.Container.addImpl(Container.java:1098)
at javax.swing.JLayeredPane.addImpl(JLayeredPane.java:231)
at javax.swing.JDesktopPane.addImpl(JDesktopPane.java:484)
at java.awt.Container.add(Container.java:415)
at javax.swing.DefaultDesktopManager.deiconifyFrame(DefaultDesktopManager.java:221)
at javax.swing.plaf.basic.BasicInternalFrameUI.deiconifyFrame(BasicInternalFrameUI.java:603)
at javax.swing.plaf.basic.BasicInternalFrameUI$Handler.propertyChange(BasicInternalFrameUI.java:1422)
at java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:335)
at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:327)
at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:263)
at java.awt.Component.firePropertyChange(Component.java:8422)
at javax.swing.JInternalFrame.setIcon(JInternalFrame.java:950)
at javax.swing.plaf.basic.BasicInternalFrameTitlePane$IconifyAction.actionPerformed(BasicInternalFrameTitlePane.java:668)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
at java.awt.Component.processMouseEvent(Component.java:6525)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6290)
at java.awt.Container.processEvent(Container.java:2234)
at java.awt.Component.dispatchEventImpl(Component.java:4881)
at java.awt.Container.dispatchEventImpl(Container.java:2292)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
at java.awt.Container.dispatchEventImpl(Container.java:2278)
at java.awt.Window.dispatchEventImpl(Window.java:2750)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Obrigado desde já.