Java Swing错误

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)未定义。
非常感谢任何帮助。

1
也许在参数中加上一个int类型的助记符? - Floris Velleman
2
它指定了“Integer”,但传递的是“int”。我很惊讶自动装箱没有处理这个问题。 - Andrew Thompson
它确实是。必须是旧版本的Java。 - David Lavender
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)。

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。您的构造函数需要一个类Integer,它类似于int,但是,正如您所看到的,它不是原始类型,而是具有方法和属性的类。因此,您可以像这样调用构造函数:

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

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)));

更多详情请点击这里


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接