-1

我得到 NullPointerException。这里有什么问题?

public class MainPanel extends JPanel {
    private final int WIDTH = 600;
    private final int HEIGHT = 400;
    private InputMap imap = getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
    private ActionMap amap;


    public MainPanel() {
        setPreferredSize(new Dimension(WIDTH, HEIGHT));
        makeShortcut("UP", new AbstractAction() {
            public void actionPerformed(ActionEvent ev) {
                System.out.print("up");
            }
        });
    }

    public void makeShortcut(String keys, AbstractAction action) {
        imap.put(KeyStroke.getKeyStroke(keys), "action"+keys);
        amap.put("action"+keys, action);
    }
}

您的帖子没有太多上下文来解释代码部分;请更清楚地解释您的情况。

4

1 回答 1

3
amap.put("action"+keys, action);

您从未分配过amap,因此它的默认值为null. 您不能在空引用上调用实例方法。

于 2013-01-25T19:10:10.750 回答