Excecao ao fechar Dialog: java.lang.NullPointerException

3 respostas
R
Tenho esse código:
private MouseListener CriarMouseListenerAlterar(){
		return new MouseListener(){

			public void mouseClicked(MouseEvent e) {
				if ( e.getClickCount() == 2 ) {
					if (visao.getTipoJanela().equals(TelaPesquisa.FRAME))
						acaoAlterar();
					else
						if (visao.getTipoJanela().equals( TelaPesquisa.DIALOGO) ){
							acaoSelecionar();
							visao.getDialogo().setVisible(false);
						}
				}
				
			}

O erro abaixo é gerado quando a linha visao.getDialogo().setVisible(false) é executada. Sei que tentou executar algo de algum objeto null, mas não entendi como nem onde, pois o getDialogo() está retornando o objeto JDialog sem problemas.

Meu método da classe da visao getDialogo abaixo:
private Window janela;
....
    private JDialog construirDialogo() {
    	JDialog dialogo = new JDialog();
    	dialogo.setContentPane(containerPesquisa);
		dialogo.setTitle(titulo);
    	dialogo.pack();
		dialogo.setLocationRelativeTo(null);
		dialogo.setModal(true);
    	dialogo.setVisible(true);
		janela = dialogo;
		return dialogo;
	}
...
public JDialog getDialogo(){
		if (tipoJanela.equals(DIALOGO))
			return (JDialog)janela;
		else
			return null;
	}

Exception occurred during event dispatching:
java.lang.NullPointerException
at src.controller.ControladorTelaPesquisaModelo$6.mouseClicked(ControladorTelaPesquisaModelo.java:92)
at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:212)
at java.awt.Component.processMouseEvent(Component.java:5491)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3093)
at java.awt.Component.processEvent(Component.java:5253)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3901)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1766)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:153)
at java.awt.Dialog$1.run(Dialog.java:515)
at java.awt.Dialog.show(Dialog.java:536)
at java.awt.Component.show(Component.java:1300)
at java.awt.Component.setVisible(Component.java:1253)
at src.swing.TelaPesquisa.construirDialogo(TelaPesquisa.java:116)
at src.swing.TelaPesquisa.construirJanela(TelaPesquisa.java:179)
at src.controller.ControladorTelaPesquisaDescricaoMaterial.(ControladorTelaPesquisaDescricaoMaterial.java:19)
at src.controller.LocalizadorObjetos.obterDescricaoMaterial(LocalizadorObjetos.java:18)
at src.controller.ControladorTelaEdicaoMaterialDaTesoura$1.actionPerformed(ControladorTelaEdicaoMaterialDaTesoura.java:33)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)
at java.awt.Component.processMouseEvent(Component.java:5488)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3093)
at java.awt.Component.processEvent(Component.java:5253)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1766)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:153)
at java.awt.Dialog$1.run(Dialog.java:515)
at java.awt.Dialog.show(Dialog.java:536)
at java.awt.Component.show(Component.java:1300)
at java.awt.Component.setVisible(Component.java:1253)
at src.controller.ControladorTelaEdicaoMaterialDaTesoura.(ControladorTelaEdicaoMaterialDaTesoura.java:27)
at src.controller.ControladorTelaEdicaoTesoura.acaoAdicionar(ControladorTelaEdicaoTesoura.java:64)
at src.controller.ControladorTelaEdicaoModelo$4.actionPerformed(ControladorTelaEdicaoModelo.java:66)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)
at java.awt.Component.processMouseEvent(Component.java:5488)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3093)
at java.awt.Component.processEvent(Component.java:5253)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1766)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:153)
at java.awt.Dialog$1.run(Dialog.java:515)
at java.awt.Dialog.show(Dialog.java:536)
at java.awt.Component.show(Component.java:1300)
at java.awt.Component.setVisible(Component.java:1253)
at src.controller.ControladorTelaEdicaoTesoura.(ControladorTelaEdicaoTesoura.java:37)
at src.controller.ControladorTelaPesquisaTesoura.acaoAlterar(ControladorTelaPesquisaTesoura.java:27)
at src.controller.ControladorTelaPesquisaModelo$6.mouseClicked(ControladorTelaPesquisaModelo.java:88)
at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:212)
at java.awt.Component.processMouseEvent(Component.java:5491)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3093)
at java.awt.Component.processEvent(Component.java:5253)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3901)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1766)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)

3 Respostas

W

na linha 92 tem um objeto que vc esta tentando usar, todavia o mesmo esta nulo

testa primeiro se o mesmo esta diferente de nulo antes de usar

if (obj != null)
getDialog()…

R

Valeu, descobri o que era.
E o pior que que agente pensa que o java tá errado e que agente fez certo.
:oops:

Rafael_Steil

ronaldorezende:

E o pior que que agente pensa que o java tá errado e que agente fez certo.
:oops:

Ai esta algo que voec pode levar para o resto da vida: quando algo da pau no teu programa, qual probabilidade de culpa eh maior: sua, ou do Java (ou qq tecnologia que for)? ;). Embora voce possa sim defrontar-se com algum bug na VM / compilador, o erro, na esmagadora maioria, eh do programador.

Rafael

Criado 6 de maio de 2005
Ultima resposta 7 de mai. de 2005
Respostas 3
Participantes 3