Erro ao fechar um JDialog

9 respostas
furacao123

Eu tenho um frame q serve como pagina principal e nele o menu onde eu chamo telas (JDialog) e os adiciono em um JDesktopPanel…soh q estou tendo um problema sempre quando eu fecho esse JDialog ou por exemplo meu JDialog tenha um Panel q eu deixo invisivel e visivel eh gerado o seguinte erro

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: adding a window to a container

mas tudo eh executado normalmente…oq faço pra tirar esse erro??

9 Respostas

wellington7

Poste seu código, isso facilita pra nós ajudarmos… :slight_smile:

furacao123

Ok amanha pela manha ja posto o codigo…mas eh sem segredo soh adiciono no JDesktopPanel…amanha detalho melhor

vlw

wellington7

E o resto da msg de erro? É só isso que aparece?

Exception in thread “AWT-EventQueue-0” java.lang.IllegalArgumentException: adding a window to a container

Está dizendo aí que é ilegal adicionar uma janela dentro de um container. Embaixo dessa msg não vem mais nada?

furacao123

no menu do meu form principal ha o seguinte codigo no listener

private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
   JDialog empresa = new dfrmEmpresa(this, true);
   empresa.setVisible(true);
   dpnlPrincipal.add(empresa);
    }

e no dfrmEmpresa que é um JDialog eu dou um dispose ao fechar e me retorna essa msg de erro

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: adding a window to a container
        at java.awt.Container.addImpl(Container.java:1022)
        at javax.swing.JLayeredPane.addImpl(JLayeredPane.java:209)
        at javax.swing.JDesktopPane.addImpl(JDesktopPane.java:470)
        at java.awt.Container.add(Container.java:352)
        at PaginaPrincipal.jMenuItem1ActionPerformed(PaginaPrincipal.java:219)
        at PaginaPrincipal.access$700(PaginaPrincipal.java:8)
        at PaginaPrincipal$8.actionPerformed(PaginaPrincipal.java:115)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
        at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1220)
        at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1261)
        at java.awt.Component.processMouseEvent(Component.java:6041)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
        at java.awt.Component.processEvent(Component.java:5806)
        at java.awt.Container.processEvent(Container.java:2058)
        at java.awt.Component.dispatchEventImpl(Component.java:4413)
        at java.awt.Container.dispatchEventImpl(Container.java:2116)
        at java.awt.Component.dispatchEvent(Component.java:4243)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
        at java.awt.Container.dispatchEventImpl(Container.java:2102)
        at java.awt.Window.dispatchEventImpl(Window.java:2440)
        at java.awt.Component.dispatchEvent(Component.java:4243)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

mas isso acontece em todos os JDialog q eu fecho

fabim

Que tal postar o trecho onde rola o dispose()?

furacao123

private void btnSairActionPerformed(java.awt.event.ActionEvent evt) { if (JOptionPane.showConfirmDialog(null, "Deseja realmente sair ?") <= 0) { dispose(); } }

fabim

Creio que o seu problema seja nessa linha:

dpnlPrincipal.add(empresa); Exclua e tudo deve funcionar normalmente.

JDialogs nao podem ser adicionados a containers (JDesktopPanes, JInternalFrames, etc…)
Apenas sao vinculados a Windows (JFrame é um deles)…

Vc nao “adiciona” um Dialog a ninguem. Vc apenas diz que ele esta"preso" a tal “Window” (no caso, um JFrame)

furacao123

Resolvido era esse o problema mesmo Obrigado.

wellington7

Da proxima vez, logo de cara poste tudo que puder… codigo… erro completo… agradecimentos adiantados… :smiley:

Criado 17 de dezembro de 2008
Ultima resposta 18 de dez. de 2008
Respostas 9
Participantes 3