错误:java.lang.NullPointerException等,来源不明

达巴德

我在修复我的代码时遇到困难。它运行完美,除了运行applet时获得的异常数量外。我不断收到的错误消息是:

WholePanel $ Canvas.paintComponent(WholePanel.java:82)处的线程“ AWT-EventQueue-0”中的异常java.lang.NullPointerException

许多其他未知来源。我查看了网站上的各种NullPointerException问题,但这些问题都没有帮助。

这是我的代码:

import java.awt.*;
import javax.swing.*;
import java.awt.event.*; // To use listener interfaces
import java.util.ArrayList;

public class WholePanel extends JPanel
{
   private ArrayList <Rect> rectList;
   private ArrayList <Rect> newList;
   private boolean flag;
   private Color currentColor;
   private Canvas canvas;
   private JComboBox colorList;
   private JButton erase;
   private JButton undo;
   private JPanel buttonPanel;
   private JPanel controlPanel;
   private JSplitPane sp;

   public WholePanel()
    {
      //Here we use black to draw a rectangle
      currentColor = Color.black;
      String colors[] = {"black", "red", "blue", "green", "orange"};
      JComboBox<String> colorList = new JComboBox<String>(colors);
      ColorListener colorListener = new ColorListener();
      colorList.addActionListener(colorListener);

      undo = new JButton("Undo");
      undo.addActionListener(new ButtonListener());

      erase = new JButton("Erase");
      erase.addActionListener(new ButtonListener());

      buttonPanel = new JPanel(new GridLayout(1,2));
      buttonPanel.add(undo);
      buttonPanel.add(erase);

      controlPanel = new JPanel();
      controlPanel.setLayout(new BoxLayout(controlPanel, BoxLayout.X_AXIS));
      controlPanel.add(colorList);
      controlPanel.add(buttonPanel);

      canvas = new Canvas();

      JSplitPane sp = new JSplitPane(JSplitPane.VERTICAL_SPLIT, controlPanel, canvas);
      setLayout(new BorderLayout());
      add(sp);

      //To be completed

     }


    private class Canvas extends JPanel
     {
        //This method needs to be defined to draw in this panel

        private Point startingPoint, endingPoint, movingPoint;
     private Rect rectangle;
     private int x, y;

     public Canvas()
     {
      PointListener pointListener = new PointListener();
      this.addMouseListener(pointListener);
      this.addMouseMotionListener(pointListener);
     }

      public void paintComponent(Graphics page)
       {
         super.paintComponent(page);

         setBackground(Color.white);

         for(int i = 0; i < rectList.size(); i++)
         {
          rectList.get(i).draw(page);
         }

         if(endingPoint != null)
         {
          startingPoint = null;
          endingPoint = null;
          movingPoint = null;
         }

         else if(movingPoint != null && x >= 0 && y >= 0)
         {
          page.setColor(currentColor);
          page.drawRect(startingPoint.x, startingPoint.y, x, y);
         }

        //To be filled
       }
     } //End of Canvas class

    private class PointListener implements MouseListener, MouseMotionListener
    {
  private Point startingPoint, endingPoint, movingPoint;
  private Rect rectangle;
     private int x, y;

                 public void mousePressed(MouseEvent event)
                  {
                         //Needs to be filled
                   startingPoint = event.getPoint();
                  }

                 public void mouseReleased(MouseEvent event)
                  {
                         //Needs to be filled
                   endingPoint = event.getPoint();
                   x = endingPoint.x - startingPoint.x;
                   y = endingPoint.y - startingPoint.y;

                   if(endingPoint != null && x >= 0 && y >= 0)
                   {
                    Rect rectangle = new Rect(startingPoint.x, startingPoint.y, x, y, currentColor);
                    rectList.add(rectangle);
                   }

                   canvas.repaint();
                  }

                 public void mouseClicked(MouseEvent event) {}
                 public void mouseEntered(MouseEvent event) {}
                 public void mouseExited(MouseEvent event) {}
                 public void mouseDragged(MouseEvent event)
                   {
                        //Needs to be filled
                   movingPoint = event.getPoint();
                   x = movingPoint.x - startingPoint.x;
                   y = movingPoint.y - startingPoint.y;

                   canvas.repaint();
                   }

                 public void mouseMoved(MouseEvent event) {}

     } //end of PointListener

    private class ButtonListener implements ActionListener
    {
     public void actionPerformed(ActionEvent event)
     {
      rectList.trimToSize();
      rectList.remove(rectList.size() - 1);
      repaint();
     }
    }

    private class ColorListener implements ActionListener
    {
     public void actionPerformed(ActionEvent event)
     {
      switch(colorList.getSelectedIndex())
      {
       case 'r':
        currentColor = Color.red;
        break;
       case 'b':
        currentColor = Color.blue;
        break;
       case 'g':
        currentColor = Color.green;
        break;
       case 'o':
        currentColor = Color.orange;
        break;
       default:
        currentColor = Color.black;
      }
     }
    }
} // end of Whole Panel Class
雷米乌斯

双方rectListnewList需要进行初始化

rectList = new ArrayList<Rect>();
newList = new ArrayList<Rect>();

这也是另一个NPE来源-您正在隐藏变量colorList

JComboBox<String> colorList = new JComboBox<String>(colors);

应该

colorList = new JComboBox<String>(colors);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

java.lang.NullPointerException错误

来自分类Dev

java.lang.NullPointerException错误?

来自分类Dev

java.lang.nullpointerexception错误

来自分类Dev

java.lang.NullPointerException错误

来自分类Dev

“错误或错误” java.lang.NullPointerException

来自分类Dev

tableau使用的来源不明

来自分类常见问题

java.lang.NullPointerException(无错误消息)

来自分类Dev

java.lang.NullPointerException错误已缓冲

来自分类Dev

错误输出为java.lang.NullPointerException

来自分类Dev

Eclipse:错误java.lang.NullPointerException

来自分类Dev

Eclipse错误:java.lang.NullPointerException

来自分类Dev

错误java.lang.NullPointerException JSF

来自分类Dev

java.util.concurrent.ExecutionException:java.lang.NullPointerException错误

来自分类Dev

如何在Java中调试java.lang.NullPointerException错误?

来自分类Dev

使用Proguard时来源不明

来自分类Dev

java.lang.NullPointerException?

来自分类Dev

错误:模块“名称”生产:java.lang.NullPointerException

来自分类Dev

片段开始时出现java.lang.NullPointerException错误

来自分类Dev

REST Servlet的春季注入-java.lang.NullPointerException错误

来自分类Dev

从数组访问方法时发生java.lang.NullPointerException错误

来自分类Dev

“线程“主”中的异常java.Lang.NullPointerException”错误

来自分类Dev

Java.lang.NullPointerException错误。检查空对象

来自分类Dev

请帮我调试错误:java.lang.NullPointerException

来自分类Dev

错误:“无法启动活动ComponentInfo ... Java.lang.NullPointerException”

来自分类Dev

无法弄清楚java.lang.NullPointerException错误

来自分类Dev

PayPal-Javascript-REST-错误:java.lang.NullPointerException

来自分类Dev

错误:线程“主”中的异常java.lang.NullPointerException

来自分类Dev

记录音频和java.lang.NullPointerException错误

来自分类Dev

调用类方法时发生错误java.lang.NullPointerException

Related 相关文章

  1. 1

    java.lang.NullPointerException错误

  2. 2

    java.lang.NullPointerException错误?

  3. 3

    java.lang.nullpointerexception错误

  4. 4

    java.lang.NullPointerException错误

  5. 5

    “错误或错误” java.lang.NullPointerException

  6. 6

    tableau使用的来源不明

  7. 7

    java.lang.NullPointerException(无错误消息)

  8. 8

    java.lang.NullPointerException错误已缓冲

  9. 9

    错误输出为java.lang.NullPointerException

  10. 10

    Eclipse:错误java.lang.NullPointerException

  11. 11

    Eclipse错误:java.lang.NullPointerException

  12. 12

    错误java.lang.NullPointerException JSF

  13. 13

    java.util.concurrent.ExecutionException:java.lang.NullPointerException错误

  14. 14

    如何在Java中调试java.lang.NullPointerException错误?

  15. 15

    使用Proguard时来源不明

  16. 16

    java.lang.NullPointerException?

  17. 17

    错误:模块“名称”生产:java.lang.NullPointerException

  18. 18

    片段开始时出现java.lang.NullPointerException错误

  19. 19

    REST Servlet的春季注入-java.lang.NullPointerException错误

  20. 20

    从数组访问方法时发生java.lang.NullPointerException错误

  21. 21

    “线程“主”中的异常java.Lang.NullPointerException”错误

  22. 22

    Java.lang.NullPointerException错误。检查空对象

  23. 23

    请帮我调试错误:java.lang.NullPointerException

  24. 24

    错误:“无法启动活动ComponentInfo ... Java.lang.NullPointerException”

  25. 25

    无法弄清楚java.lang.NullPointerException错误

  26. 26

    PayPal-Javascript-REST-错误:java.lang.NullPointerException

  27. 27

    错误:线程“主”中的异常java.lang.NullPointerException

  28. 28

    记录音频和java.lang.NullPointerException错误

  29. 29

    调用类方法时发生错误java.lang.NullPointerException

热门标签

归档