0

クリックすると、* 行の間の行でヌル ポインター例外が発生し続けます。私はそれを約1時間見てきましたが、理由がわかりません。どんな助けでも大歓迎です。ありがとう。

    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 に答える