Exception in thread "AWT-Eventqueue-0" java.lang.Nullpointerexception

Asked

Viewed 171 times

0

I’m trying to pass an old code to an MVC standard, but by modifying the methods and creating the new Zoom class, I’m encountering this console flaw:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at CONTROL.CAplicativo.controlaZoom(CAplicativo.java:202)
at CONTROL.CAplicativo.actionPerformed(CAplicativo.java:133)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

My class is

package CONTROL;

import java.awt.*;
import java.awt.event.*;

import MODEL.Zoom;
import VIEW.*;
import CONTROL.CImagem;

public class CAplicativo implements ActionListener {

private MPInicial pnCenario;
private Graphics desenhoCen, desenhoDir;
private CImagem controleImagem;
private Zoom ImagemZoom;
private String nomeArquivoImagemDada;
private char[][] imagemCinza; 
private char[][] imagemAtual;

private int nLinImageAtual, nColImageAtual;
private int nLinImageInic, nColImageInic;
private boolean estadoDesenho;

// **************************************************************************

public CAplicativo() {
    pnCenario = new MPInicial(this);
    pnCenario.showPanel();
    estadoDesenho = false;
}

// **************************************************************************
// METODO PARA CONTROLE DOS BOTOES DO APLICATIVO

public void actionPerformed(ActionEvent e) 
{
    String comando, nomeArquivo;
    comando = e.getActionCommand();

    // DEFINE AMBIENTE GRAFICO
    if (!estadoDesenho) {
        pnCenario.iniciarGraphics();
        desenhoCen = pnCenario.getDesenhoC();
        desenhoDir = pnCenario.getDesenhoD();
    }

    // ENDS THE PROGRAM
    if (comando.equals("botaoFim")) {
        System.exit(0);
    }

    // INICIA O PROGRAMA
    if (comando.equals("botaoImagem")) {

        // LE IMAGEM SOLICITADA
        nomeArquivoImagemDada = pnCenario.escolherArquivo(1);
        if (nomeArquivoImagemDada != null) {
            controleImagem = new CImagem(nomeArquivoImagemDada, desenhoCen);
            estadoDesenho  = true;
            imagemCinza    = controleImagem.getImagemCinza();
            nLinImageInic  = controleImagem.getNLin();
            nColImageInic  = controleImagem.getNCol();

            pnCenario.mudarBotoes();
            pnCenario.limpaPainelDir(desenhoDir);
            controleImagem.mostrarImagemMatriz(imagemCinza, nLinImageInic,
                    nColImageInic, desenhoDir);

            nLinImageAtual = nLinImageInic;
            nColImageAtual = nColImageInic;
            imagemAtual = controleImagem.copiarImagem(imagemCinza,
                    nLinImageInic, nColImageInic);
        }
    }

    //  CHAMANDO OS BOTOES DE CONTROLE DE FILTRAGEM DA IMAGEM
    // (CRIADO PELA EQUIPE)

    if (comando.equals("botaoFiltro") && estadoDesenho) {

        int mascara = 0;
        // flag para controlar qual metodo de filtragem sera usado

        if (pnCenario.getBotaoHorizontal() == 2) {

            mascara = 1;                
        }

        if (pnCenario.getBotaoVertical() == 2) {

            mascara = 2;
        }

        if (pnCenario.getBotaoAmbos() == 2) {

            mascara = 3;
        }

        controlaFiltro(mascara); // chamada do método controlaFiltro.
        // Mascara indica qual metodo de filtragem sera usado
    }

    // CHAMANDO OS BOTOES DE CONTROLE DE ZOOM (CRIADO PELA EQUIPE)
    if (comando.equals("botaoZoom") && estadoDesenho) {

        int auxZoom = 0; // flag para controlar qual tamanho
        // de zoom foi escolhido

        if(pnCenario.getBotaoZoomIn25() == 2){
            auxZoom = 25;       
        }

        if(pnCenario.getBotaoZoomIn50() == 2){
            auxZoom = 50;       
        }

        if (pnCenario.getBotaoZoomIn75() == 2) {                
            auxZoom = 75;
        }

        if(pnCenario.getBotaoZoomIn100() == 2){
            auxZoom = 100;
        }

        if (pnCenario.getBotaoZoomOut25() == 2){
            auxZoom = -25;
        }

        if(pnCenario.getBotaoZoomOut50() == 2){
            auxZoom = -50;
        }

        if(pnCenario.getBotaoZoomOut75() == 2){
            auxZoom = -75;
        }

        controlaZoom(auxZoom); // chamada do método controlaZoom.
        // Mascara indica qual tamanho de zoom sera usado   
    }

    if (comando.equals("botaoSalva") && estadoDesenho) {
        nomeArquivo = pnCenario.escolherArquivo(2);
        controleImagem.gravarImagem(nomeArquivo, imagemAtual,
                nLinImageAtual, nColImageAtual);
    }

    if (comando.equals("botaoReset") && estadoDesenho) {
        pnCenario.limpaPainelCen(desenhoCen);
        controleImagem = new CImagem(nomeArquivoImagemDada,
                desenhoCen);
        nLinImageAtual = nLinImageInic;
        nColImageAtual = nColImageInic;
        imagemAtual = controleImagem.copiarImagem(imagemCinza,
                nLinImageInic, nColImageInic);

        pnCenario.limpaPainelDir(desenhoDir);
        controleImagem.mostrarImagemMatriz(imagemAtual, nLinImageAtual,
                nColImageAtual, desenhoDir);

        pnCenario.ativarPainelAcao1();
        pnCenario.resetaSistema();
    }
}

// **************************************************************************

// METODO PARA CONTROLAR A VISUALIZACAO DAS IMAGENS FILTRADAS
// (CRIADO PELA EQUIPE)
private void controlaFiltro(int mascara){

    if(pnCenario.getTipoVisualImage() == 2){

        char[][] temp = new char[nLinImageAtual][nColImageAtual];

        temp = controleImagem.copiarImagem(imagemAtual,
          nLinImageAtual, nColImageAtual);
// variavel temporaria criada para armazenar valor da imagem atual

        imagemAtual = controleImagem.aplicaCanny(imagemAtual,
          nLinImageAtual, nColImageAtual, mascara);
        pnCenario.limpaPainelCen(desenhoCen);
        controleImagem.mostrarImagemMatriz(temp, nLinImageAtual,
          nColImageAtual, desenhoCen);
        pnCenario.limpaPainelDir(desenhoDir);
    }   

    if (pnCenario.getNewImage() == 2)

        imagemAtual = controleImagem.aplicaCanny(imagemAtual,
          nLinImageAtual, nColImageAtual, mascara);
        controleImagem.mostrarImagemMatriz(imagemAtual,
          nLinImageAtual, nColImageAtual, desenhoDir);
}

// **************************************************************************


// METODO PARA CONTROLAR VISUALIZACAO DAS IMAGENS AMPLIADAS OU DIMINUIDAS
// (CRIADO PELA EQUIPE)
private void controlaZoom(int auxZoom) {        

    if(pnCenario.getTipoVisualImage() == 2){   

        char[][] temp = new char[nLinImageAtual][nColImageAtual];
        // variavel temporaria criada para armazenar valor da imagem atual

        temp = ImagemZoom.copiarImagem(imagemAtual, nLinImageAtual,
          nColImageAtual);

        imagemAtual = ImagemZoom.aplicaZoom(imagemAtual,
          nLinImageAtual, nColImageAtual, auxZoom);
        pnCenario.limpaPainelCen(desenhoCen);
        controleImagem.mostrarImagemMatriz(temp, nLinImageAtual,
          nColImageAtual, desenhoCen);
        pnCenario.limpaPainelDir(desenhoDir);
    }

    if (pnCenario.getNewImage() == 2)   

        imagemAtual = ImagemZoom.aplicaZoom(imagemAtual,
          nLinImageAtual, nColImageAtual, auxZoom);

        nLinImageAtual = controleImagem.getNLin();
        nColImageAtual = controleImagem.getNCol();
        pnCenario.limpaPainelDir(desenhoDir);
        controleImagem.mostrarImagemMatriz(imagemAtual,
          nLinImageAtual, nColImageAtual, desenhoDir);                  
    }

// **************************************************************************
}
  • Hello Paul! You can tell us what’s on the line 202 and 133 of your program?

  • naminha line 133 has controlZoom(auxZoom); // call of the controlZoom method. Mascara indicates which zoom size will be used

  • on my 133 line has: controlZoom(auxZoom); //call of the controlZoom method. Mascara indicates which zoom size will be used. Already on line 202 has: imagemAtual = Imagemzoom.applicationZoom(imagemAtual, nLinImageAtual, nColImageAtual, auxZoom); Imagemzoom was the variable I created to reference the Zoom class and pull the method

  • You urged private Zoom ImagemZoom; before using it?

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.