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ありませんIntegerInteger変更してみるか、単にキャストしてみてくださいnew Integer(KeyEvent.VK_S)

于 2013-02-20T12:21:48.697 に答える
0

コンストラクターには、intプリミティブではなく、Integerオブジェクトが必要です。他のソリューションとは対照的に、特にKeyEvent.VK_Sは常に同じint値を表すため、のInteger.valueOf代わりに使用することをお勧めします。new Integer

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