因此,我正在使用自定义菜单制作应用程序。为此,我有两种类型的类,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
方法。