0

保存アクションを実装するコードが与えられましたが、コードを挿入するとエラーが発生しました:

クラス saveAction の修飾子が不正です。アブストラクトまたはファイナルのみが許可されます。

コード:

protected void initialiseActions(){
    // TODO: initalise your actions here 
    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);
}   

どんな助けでも大歓迎です。ありがとう

4

2 に答える 2

1

publicローカル クラスを宣言することはできません。識別子を削除しpublicます。

protected void initialiseActions(){
    // TODO: initalise your actions here 
    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);
}   

これは、Java 言語仕様で指定されています。

ローカル クラス宣言にアクセス修飾子 public、protected、private (§6.6)、または修飾子 static (§8.1.1) が含まれていると、コンパイル時エラーになります。

于 2013-10-26T17:29:12.153 に答える