自定义类中的java运行方法
因此,我正在使用自定义菜单制作一个应用程序。我有两种类型的类,MenuContainer类和MenuOption类。MenuContainer决定菜单的大小、位置和对齐方式,MenuOption决定要显示的字符串、字体、颜色等。我还想为每个菜单选项添加一段代码,该代码决定单击菜单选项时将发生什么。因此,每个菜单选项都有自己的唯一代码,在创建新菜单选项时设置该代码。我该怎么做?我希望这样的事情可以奏效:自定义类中的java运行方法,java,Java,因此,我正在使用自定义菜单制作一个应用程序。我有两种类型的类,MenuContainer类和MenuOption类。MenuContainer决定菜单的大小、位置和对齐方式,MenuOption决定要显示的字符串、字体、颜色等。我还想为每个菜单选项添加一段代码,该代码决定单击菜单选项时将发生什么。因此,每个菜单选项都有自己的唯一代码,在创建新菜单选项时设置该代码。我该怎么做?我希望这样的事情可以奏效: MenuOption option1 = new MenuOption("Option1",f
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()
,必须在类菜单选项中声明该方法
像这样:
public class MenuOption {
...
public void run() { /* default implementation does nothing */ }
...
}
现在,您的匿名子类覆盖了run
方法,但是可以通过计算为typeMenuOption
的表达式调用该方法
用户是否单击了菜单选项是另一回事。但是如果您能够检测到这样的点击,只需在点击选项上调用运行方法。您可以使用线程方法:
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();
}
public void Hello(){
新线程(){
公开募捐{
对于(int i=0;iAh,这正是我想要的。非常感谢。我可以在菜单之外的许多其他地方应用它。)Hmmm…这叫做子类型多态性,是面向对象编程中的一个关键概念。很高兴为您提供帮助。