因此,我正在使用自定义菜单制作应用程序。为此,我有两种类型的类,MenuContainer类和MenuOption类。 MenuContainer决定菜单的大小,位置和对齐方式,而MenuOption决定要显示的字符串,字体,颜色等。我还想向每个MenuOption添加一段代码,该代码决定单击MenuOption时将发生什么。因此,每个MenuOption都有自己的唯一代码,该代码在创建新的MenuOption时设置。我该怎么做呢?我希望这样的事情可以工作:

MenuOption option1 = new MenuOption("Option1",font,color) {

    public void run() {

        //code to be executed

    }

};

option1.run();  //running the code


我不知道是否经常问这个问题,但是我没有找到任何东西。

最佳答案

到目前为止,您的方法看起来还不错(尽管事实是,已经有用于处理菜单机制的GUI框架)。

请记住,您创建了MenuOption的匿名子类,并在其中放置了run方法。但是变量option1的类型为MenuOption(不是匿名子类型)。为了能够调用方法run(),必须在类MenuOption中对其进行声明。

像这样:

public class MenuOption {
    ...
    public void run() { /* default implementation does nothing */ }
    ...
}


现在,您的匿名子类将覆盖run方法,但是该方法仍可以通过计算为MenuOption类型的表达式来调用。

用户是否单击菜单选项是另一回事。但是,如果您能够检测到这种单击,只需在clicked选项上调用run方法。

10-07 18:50