-1

重複の可能性:
65行目のスレッド「AWT-EventQueue-0」java.lang.NullPointerExceptionで例外を特定するのを手伝ってくれる人はいますか?

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at SelectUnitFrame.<init>(SelectUnitFrame.java:112)
    at CoolingTowerFrame$ButtonListener.actionPerformed(CoolingTowerFrame.java:184)
    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$000(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)

コードは長いですが、この投稿を編集して、役立つ場合は追加できます

このため、コードが機能していないと思います[112行目]tableButton.setRolloverEnabled(false); ロールオーバーを無効にする必要がある理由は、ボタンを押したときにボタンが変更されたときに元の画像に戻らないようにするためです。それに対する修正があれば、それもうまくいくかもしれません。

ここにコードがあります:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;

public class SelectUnitFrame extends JFrame
{
  public JLabel showNumbersLabel;
  public JPanel showPanel = new JPanel();
  public JButton tableButton;
  public JPanel buttonPanel = new JPanel();
  public JButton goBackButton = new JButton("Change Variables");
  public JButton exitButton = new JButton("Done");
  public JButton nextButton = new JButton(">");
  public JButton prevButton = new JButton("<");
  public int fRate;
  public int wbTemp;
  public int r;
  public int a; 
  public int rcTons;
  public int count;
  public String [] tablesFor80 = {"80F_FG2003.GIF", "80F_FG2004.GIF", "80F_FG2005.GIF", "80F_FG2007.GIF", "80F_FG2009.GIF", "80F_FG2011.GIF", "80F_FG2015.GIF"};
  public String [] tablesFor78 = {"78F_FG2003.GIF", "78F_FG2004.GIF", "78F_FG2005.GIF", "78F_FG2007.GIF", "78F_FG2009.GIF", "78F_FG2011.GIF", "78F_FG2015.GIF"};
  public String [] tablesFor76 = {"76F_FG2003.GIF", "76F_FG2004.GIF", "76F_FG2005.GIF", "76F_FG2007.GIF", "76F_FG2009.GIF", "76F_FG2011.GIF", "76F_FG2015.GIF"};
  public String [] tablesFor74 = {"74F_FG2003.GIF", "74F_FG2004.GIF", "74F_FG2005.GIF", "74F_FG2007.GIF", "74F_FG2009.GIF", "74F_FG2011.GIF", "74F_FG2015.GIF"};
  public String [] tablesFor72 = {"72F_FG2003.GIF", "72F_FG2004.GIF", "72F_FG2005.GIF", "72F_FG2007.GIF", "72F_FG2009.GIF", "72F_FG2011.GIF", "72F_FG2015.GIF"};
  public String [] tablesFor70 = {"70F_FG2003.GIF", "70F_FG2004.GIF", "70F_FG2005.GIF", "70F_FG2007.GIF", "70F_FG2009.GIF", "70F_FG2011.GIF", "70F_FG2015.GIF"};
  public String [] tablesFor68 = {"68F_FG2003.GIF", "68F_FG2004.GIF", "68F_FG2005.GIF", "68F_FG2007.GIF", "68F_FG2009.GIF", "68F_FG2011.GIF", "68F_FG2015.GIF"};
  public ImageIcon tablePicture;   


  public SelectUnitFrame(int flowRate, int wetBulbTemp, int roundedCoolingTons, int approach, int range)
  {
    super("Unit Selected");
    Toolkit toolkit = Toolkit.getDefaultToolkit();
    Dimension dimensions = toolkit.getScreenSize();
    int x = (dimensions.width - 750)/2; 
    int y = (dimensions.height - 350)/2;
    setBounds(x, y, 750, 350); 

    setVisible(true);
    setResizable(false);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    goBackButton.addActionListener(new ButtonListener());
    exitButton.addActionListener(new ButtonListener());
    nextButton.addActionListener(new ButtonListener());
    prevButton.addActionListener(new ButtonListener());

    fRate = flowRate;
    wbTemp = wetBulbTemp;
    r = range;
    a = approach;
    rcTons = roundedCoolingTons;

    buttonPanel.add(goBackButton);
    buttonPanel.add(exitButton);

    add(buttonPanel, BorderLayout.SOUTH);

    showNumbersLabel = new JLabel("Wet Bulb: " + wbTemp + "(deg)F     " + "Range: " + r + "     Approach: " + a + "     Tons/GPM: " + rcTons + "/" + fRate);
    showPanel.add(showNumbersLabel);

    add(showPanel, BorderLayout.NORTH);

    if ((wbTemp >= 79) && (wbTemp < 82))
    {
      tempSelection80(flowRate, wetBulbTemp, roundedCoolingTons, approach, range);
    }
    else if ((wbTemp < 79 ) && (wbTemp >= 77))
    {
      tempSelection78(flowRate, wetBulbTemp, roundedCoolingTons, approach, range);
    }  
    else if ((wbTemp < 77) && (wbTemp >= 75))
    {
      tempSelection76(flowRate, wetBulbTemp, roundedCoolingTons, approach, range);
    } 
    else if ((wbTemp < 75) && (wbTemp >= 73))
    {
      tempSelection74(flowRate, wetBulbTemp, roundedCoolingTons, approach, range);
    }
    else if ((wbTemp < 73) && (wbTemp >= 71))
    {
      tempSelection72(flowRate, wetBulbTemp, roundedCoolingTons, approach, range);
    }
    else if ((wbTemp < 71) && (wbTemp >= 69))
    {
      tempSelection70(flowRate, wetBulbTemp, roundedCoolingTons, approach, range);
    }
    else if ((wbTemp < 69) && (wbTemp >= 67))
    {
      tempSelection68(flowRate, wetBulbTemp, roundedCoolingTons, approach, range);
    }
    else
    {
      tableButton = new JButton("Cooling Tower Cannot Handle Temperatures In This Wet Bulb");
    }
    tableButton.setRolloverEnabled(false);
    add(nextButton, BorderLayout.EAST);
    add(prevButton, BorderLayout.WEST);
    add(tableButton, BorderLayout.CENTER);
  }
  private class ButtonListener implements ActionListener
  {
    @Override
    public void actionPerformed(ActionEvent e)
    {
      if (e.getSource() == goBackButton)
      {
        dispose();
      }
      else if (e.getSource() == exitButton)
      {
        System.exit(0);
      }
      else if (e.getSource() == nextButton)
      {
        String t = tableButton.getText();
        tableButton.updateUI();
        String s = ((ImageIcon)tableButton.getIcon()).toString();
        if ((wbTemp >= 79) && (wbTemp < 82))
        {
          if (t.equals("Cannot Find Model for Variables Given. Adjust or Scroll to Look Through Tables."))
          {
            count = 0;
          }
          else
          {
            for (int i = 0; i <= 6; i++)
            {
              if (s.equals(tablesFor80[i]))
              {
                if (i == 6)
                {
                  count = 0;
                }
                else
                {
                  count = (i+1);
                }
              }
            }
          }
          tableButton = new JButton(new ImageIcon(tablesFor80[count], tablesFor80[count]));
        }
        else if ((wbTemp < 79 ) && (wbTemp >= 77))
        {
          if (t.equals("Cannot Find Model for Variables Given. Adjust or Scroll to Look Through Tables."))
          {
            count = 0;
          }
          else
          {
            for (int i = 0; i <= 6; i++)
            {
              if (s.equals(tablesFor78[i]))
              {
                if (i == 6)
                {
                  count = 0;
                }
                else
                {
                  count = (i+1);
                }
              }
            }
          }
          tableButton = new JButton(new ImageIcon(tablesFor78[count], tablesFor78[count]));
        }
        else if ((wbTemp < 77) && (wbTemp >= 75))
        {
          if (t.equals("Cannot Find Model for Variables Given. Adjust or Scroll to Look Through Tables."))
          {
            count = 0;
          }
          else
          {
            for (int i = 0; i <= 6; i++)
            {
              if (s.equals(tablesFor76[i]))
              {
                if (i == 6)
                {
                  count = 0;
                }
                else
                {
                  count = (i+1);
                }
              }
            }
          }
          tableButton = new JButton(new ImageIcon(tablesFor76[count], tablesFor76[count]));
        }
        else if ((wbTemp < 75) && (wbTemp >= 73))
        {
          if (t.equals("Cannot Find Model for Variables Given. Adjust or Scroll to Look Through Tables."))
          {
            count = 0;
          }
          else
          {
            for (int i = 0; i <= 6; i++)
            {
              if (s.equals(tablesFor74[i]))
              {
                if (i == 6)
                {
                  count = 0;
                }
                else
                {
                  count = (i+1);
                }
              }
            }
          }
          tableButton = new JButton(new ImageIcon(tablesFor74[count], tablesFor74[count]));
        }
        else if ((wbTemp < 73) && (wbTemp >= 71))
        {
          if (t.equals("Cannot Find Model for Variables Given. Adjust or Scroll to Look Through Tables."))
          {
            count = 0;
          }
          else
          {
            for (int i = 0; i <= 6; i++)
            {
              if (s.equals(tablesFor72[i]))
              {
                if (i == 6)
                {
                  count = 0;
                }
                else
                {
                  count = (i+1);
                }
              }
            }
          }
          tableButton = new JButton(new ImageIcon(tablesFor72[count], tablesFor72[count]));
        }
        else if ((wbTemp < 71) && (wbTemp >= 69))
        {
          if (t.equals("Cannot Find Model for Variables Given. Adjust or Scroll to Look Through Tables."))
          {
            count = 0;
          }
          else
          {
            for (int i = 0; i <= 6; i++)
            {
              if (s.equals(tablesFor70[i]))
              {
                if (i == 6)
                {
                  count = 0;
                }
                else
                {
                  count = (i+1);
                }
              }
            }
          }
          tableButton = new JButton(new ImageIcon(tablesFor70[count], tablesFor70[count]));
        }
        else if ((wbTemp < 69) && (wbTemp >= 67))
        {
          if (t.equals("Cannot Find Model for Variables Given. Adjust or Scroll to Look Through Tables."))
          {
            count = 0;
          }
          else
          {
            for (int i = 0; i <= 6; i++)
            {
              if (s.equals(tablesFor68[i]))
              {
                if (i == 6)
                {
                  count = 0;
                }
                else
                {
                  count = (i+1);
                }
              }
            }
          }
          tableButton = new JButton(new ImageIcon(tablesFor68[count], tablesFor68[count]));
        }
        tableButton.setRolloverEnabled(false);
        add(tableButton, BorderLayout.CENTER);
      }
      else if (e.getSource() == prevButton)
      {
        String t = tableButton.getText();
        tableButton.updateUI();
        String s = ((ImageIcon)tableButton.getIcon()).toString();
        if ((wbTemp >= 79) && (wbTemp < 82))
        {
          if (t.equals("Cannot Find Model for Variables Given. Adjust or Scroll to Look Through Tables."))
          {
            count = 0;
          }
          else
          {
            for (int i = 0; i <= 6; i++)
            {
              if (s.equals(tablesFor80[i]))
              {
                if (i == 0)
                {
                  count = 6;
                }
                else
                {
                  count = (i-1);
                }
              }
            }
          }
          tableButton = new JButton(new ImageIcon(tablesFor80[count], tablesFor80[count]));
        }
        else if ((wbTemp < 79 ) && (wbTemp >= 77))
        {
          if (t.equals("Cannot Find Model for Variables Given. Adjust or Scroll to Look Through Tables."))
          {
            count = 0;
          }
          else
          {
            for (int i = 0; i <= 6; i++)
            {
              if (s.equals(tablesFor78[i]))
              {
                if (i == 0)
                {
                  count = 6;
                }
                else
                {
                  count = (i-1);
                }
              }
            }
          }
          tableButton = new JButton(new ImageIcon(tablesFor78[count], tablesFor78[count]));
        }
        else if ((wbTemp < 77) && (wbTemp >= 75))
        {
          if (t.equals("Cannot Find Model for Variables Given. Adjust or Scroll to Look Through Tables."))
          {
            count = 0;
          }
          else
          {
            for (int i = 0; i <= 6; i++)
            {
              if (s.equals(tablesFor76[i]))
              {
                if (i == 0)
                {
                  count = 6;
                }
                else
                {
                  count = (i-1);
                }
              }
            }
          }
          tableButton = new JButton(new ImageIcon(tablesFor76[count], tablesFor76[count]));
        }
        else if ((wbTemp < 75) && (wbTemp >= 73))
        {
          if (t.equals("Cannot Find Model for Variables Given. Adjust or Scroll to Look Through Tables."))
          {
            count = 0;
          }
          else
          {
            for (int i = 0; i <= 6; i++)
            {
              if (s.equals(tablesFor74[i]))
              {
                if (i == 0)
                {
                  count = 6;
                }
                else
                {
                  count = (i-1);
                }
              }
            }
          }
          tableButton = new JButton(new ImageIcon(tablesFor74[count], tablesFor74[count]));
        }
        else if ((wbTemp < 73) && (wbTemp >= 71))
        {
          if (t.equals("Cannot Find Model for Variables Given. Adjust or Scroll to Look Through Tables."))
          {
            count = 0;
          }
          else
          {
            for (int i = 0; i <= 6; i++)
            {
              if (s.equals(tablesFor72[i]))
              {
                if (i == 0)
                {
                  count = 6;
                }
                else
                {
                  count = (i-1);
                }
              }
            }
          }
          tableButton = new JButton(new ImageIcon(tablesFor72[count], tablesFor72[count]));
        }
        else if ((wbTemp < 71) && (wbTemp >= 69))
        {
          if (t.equals("Cannot Find Model for Variables Given. Adjust or Scroll to Look Through Tables."))
          {
            count = 0;
          }
          else
          {
            for (int i = 0; i <= 6; i++)
            {
              if (s.equals(tablesFor70[i]))
              {
                if (i == 0)
                {
                  count = 6;
                }
                else
                {
                  count = (i-1);
                }
              }
            }
          }
          tableButton = new JButton(new ImageIcon(tablesFor70[count], tablesFor70[count]));
        }
        else if ((wbTemp < 69) && (wbTemp >= 67))
        {
          if (t.equals("Cannot Find Model for Variables Given. Adjust or Scroll to Look Through Tables."))
          {
            count = 0;
          }
          else
          {
          for (int i = 0; i <= 6; i++)
          {
            if (s.equals(tablesFor68[i]))
            {
              if (i == 0)
              {
                count = 6;
              }
              else
              {
                count = (i-1);
              }
            }
          }
          }
          tableButton = new JButton(new ImageIcon(tablesFor68[count], tablesFor68[count]));
        }
        tableButton.setRolloverEnabled(false);
        add(tableButton, BorderLayout.CENTER);
      }
    }
  }

問題は、本体と呼ばれるメソッドのこのステートメントにあり、長すぎて追加できません。

else
      {
        tableButton = new JButton("Cannot Find Model for Variables Given. Adjust or Scroll to Look Through Tables.");
      }

}
4

1 に答える 1

0

tableButton/ /elseの長いリストの一部が実行されない限り、nullです。ifelse ifelse

つまり、wbTempが 69 ~ 82 の場合、NullPointerException が発生します。

結論:が 69 ~ 82 のtableButton = new JButton(...)場合に実行されるようなステートメントが必要です。wbTemp

編集

あなたのコメントに対処するために、以下にコード例を追加しました。

  • condition1 が true の場合、ブロック 1 のみが実行されます
  • condition1 が false AND condition2 が true の場合、ブロック 2 のみが実行されます。
  • condition1 が false AND condition2 が false の場合、ブロック 3 のみが実行されます。

Javaチュートリアルなど、言語の基本について読むことをお勧めします

if(condition1) {
    //(Block 1)
} else if(condition2) {
    //(Block 2)
} else {
    //(Block 3)
}
于 2012-06-29T15:31:50.597 に答える