3

我得到了一个实用的任务,它带有一个 ImageEditor 文件,如果需要我可以显示它,但是它很长,所以我没有在这里发布它。

我必须实现一个保存链接,并获得了我存储在单独的类文件中的代码:

public class SaveAction extends AbstractAction{
    public SaveAction(String text, ImageIcon icon, String desc, Integer mnemonic){
        super(text, icon);
        putValue(SHORT_DESCRIPTION, desc);
        putValue(MNEMONIC_KEY, mnemonic);
    }

    public void actionPerformed(ActionEvent e){
       // Just print out a message for now.
       System.out.println("Save");
   }
}

然后在主类中创建一个实例:

Action saveAction = new SaveAction(
    "Save", new ImageIcon("img/save.png"), "Save the image", KeyEvent.VK_S);

但是它出现了错误:

构造函数 SaveAction(String, ImageIcon, String, int) 未定义。

任何帮助将不胜感激

4

3 回答 3

3

您的构造函数为:

public SaveAction(String text, ImageIcon icon, String desc, Integer mnemonic)

你打电话给:

new SaveAction("Save", new ImageIcon("img/save.png"), "Save the image",KeyEvent.VK_S);

错误是由于这个:

KeyEvent.VK_S必须是一个int而不是Integer,你有Integer作为最后一个论点。因此,请尝试更改它或将其转换为new Integer(KeyEvent.VK_S)

于 2013-02-20T12:21:48.697 回答
0

您的构造函数需要一个 Integer 对象,而不是 int 原语。与其他解决方案相比,我建议您使用Integer.valueOf而不是new Integer,尤其是因为 KeyEvent.VK_S 将始终表示相同的 int 值:

Action saveAction = new SaveAction("Save", new ImageIcon("img/save.png"), "Save the image", Integer.valueOf(KeyEvent.VK_S)));

有关更多详细信息,请参见此处

于 2013-02-20T12:35:32.980 回答
0
Action saveAction = new SaveAction("Save", new ImageIcon("img/save.png"), "Save the image",
KeyEvent.VK_S);

是您调用该方法的形式,但是,请注意您的构造函数:

public SaveAction(String text, ImageIcon icon, String desc, Integer mnemonic)

KeyEvent.VK_S 返回一个原始类型的 int。您的构造函数需要一个类似于 int 的类 Integer,但正如您所见,它不是原始类型,它是一个具有方法和属性的类。那么你可以像这样调用你的构造函数:

Action saveAction = new SaveAction("Save", new ImageIcon("img/save.png"), "Save the image",
    new Integer(KeyEvent.VK_S)));
于 2013-02-20T12:27:20.187 回答