所以我正在使用自定义菜单制作应用程序。我有两种类,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
我不知道这是否经常被问到,但我搜查了一下,什么都没发现。
答案 0 :(得分:1)
到目前为止,您的方法看起来很好(尽管事实上已经有GUI框架处理菜单机制)。
请注意,您创建了MenuOption
的匿名子类,您可以在其中放置run
方法。但变量option1
的类型为MenuOption(不是匿名子类型)。为了能够调用方法run()
,必须在类MenuOption
中声明它。
像这样:
public class MenuOption {
...
public void run() { /* default implementation does nothing */ }
...
}
现在,您的匿名子类会覆盖run
方法,但可以通过评估为MenuOption
的表达式调用该方法。
用户是否点击了菜单选项,是另一回事。但是,如果您能够检测到这样的点击,只需在点击的选项上调用run
方法。
答案 1 :(得分:0)
您可以改为使用线程方法:
public void Hello(){
new Thread(){
public void run(){
for(int i=0;i<=10;i++){
System.out.print("HELLO");
try {
sleep(1000);
} catch (InterruptedException ex) {
Logger.getLogger(Class2.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}.start();
}