0

单击时,我在 * 行之间的行处不断收到空指针异常。我已经看了大约一个小时,似乎无法弄清楚原因。任何帮助将不胜感激。谢谢。

    private Color currentColor;
    private char currentChar;
    private Letter letter;
    private JComboBox comboBox;
    private JPanel controlPanel;
    private Color[] colorArray = {Color.black,Color.blue,Color.cyan,Color.orange,Color.white,Color.yellow};
    private String[] colorStringArray = {"black","blue","cyan","orange","white","yellow"};
    private ArrayList<Letter> letterList;
    private JButton button1;
    private Canvas canvas;
    public WholePanel()
    {
        comboBox = new JComboBox(colorStringArray);
        // here we use black to draw a letter
        currentColor = colorArray[Color.black];

        // set the default character to 'A'
        currentChar = 'A';

        button1 = new JButton("Undo");


        controlPanel = new JPanel();
        controlPanel.add(button1);
        controlPanel.add(comboBox);

        canvas = new Canvas();
        JSplitPane sp = new JSplitPane(JSplitPane.VERTICAL_SPLIT, controlPanel, canvas);

        canvas.addMouseListener(new PointListener());
        add(sp);

         // make this panel listen to mouse
        addMouseListener(new PointListener());

        setBackground(Color.white);
        //This method needs to be called for this panel to listen to keys
        //When panel listens to other things, and go back to listen
        //to keys, this method needs to be called again.
        requestFocus();
    }
    private class PointListener implements MouseListener
    {
        int x;
        int y;
        // when a user clicks the panel (applet),
        // KeyListener is focused in it.
        public void mousePressed(MouseEvent event)
        {
            x = event.getX();
            y = event.getY();
            letter = new Letter(x,y,currentChar,colorArray[comboBox.getSelectedIndex()]);
            //******************************
            letterList.add(letter);
            //******************************
            for(Letter letter1 : letterList)
            {
                letter1.Draw(getGraphics());
            }
            x=y=0;
            requestFocus();
        }
    }
}
4

1 回答 1

6

你没有初始化letterList

将以下行添加到 WholePanel 的构造函数中:

letterList = new ArrayList<Letter>();
于 2013-02-20T05:55:59.760 回答