内部 class 呼叫

Inner class calling

class BubblesFrame 其中有 inner class startnewGame :

 public class startNewGame implements ActionListener{
        public void actionPerformed(ActionEvent event){

            remove(panel);
            panel = new BubbleMainPanel();
            add(panel);
            validate();
            panel.repaint();

        }
    }

class Menu 我想添加 event handler startNewGame

 ActionListener listener = new BubblesFrame.startNewGame();
        newGame.addActionListener(listener);

但它 returns 出现以下错误:

No enclosing instance of type BubblesFrame is accessible. Must qualify the allocation with an enclosing instance of type BubblesFrame (e.g. x.new A() where x is an instance of BubblesFrame)

我的内心有什么问题class?

制作startNewGameclassstatic.

如果您的内部 class 不是静态的,请使用此方法:

 ActionListener listener = new BubblesFrame().new startNewGame();

如果 startNewGame class 是 static 你可以像以前一样做:

ActionListener listener = new BubblesFrame.startNewGame();

您确实实例化了您的外部 class,但您忘记实例化您的内部 class。

BubblesFrame f = new BubblesFrame();  //Instantiate outer class
ActionListener listener = f.new startNewGame(); //Instantiate inner class

我更好奇你为什么要暴露你的内在 class 而它是你的 BubblesFrame 的 listener。您可能想再次查看您的设计模式。

通常是匿名 class 或私有 class。