动作类的非法修饰符错误

时间:2013-10-26 17:26:47

标签: java swing

我已经获得了实现保存操作的代码,但是当我输入代码时出现错误:

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

任何帮助将不胜感激。感谢

2 个答案:

答案 0 :(得分:2)

您无法声明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 Language Specification

中指定
  

如果本地类声明包含any,则是编译时错误   访问修饰符public,protected或private(§6.6),或者   modifier static(§8.1.1)。

答案 1 :(得分:0)

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