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 回答
0

您在方法中声明了一个类,这严重限制了该类的有用性。要么将它移到它自己的文件中,要么只是在你在这里谈论的类中的任何其他方法之外,使用它会更方便。

于 2013-10-26T17:46:05.630 回答