自定义类中的java运行方法

自定义类中的java运行方法,java,Java,因此,我正在使用自定义菜单制作一个应用程序。我有两种类型的类,MenuContainer类和MenuOption类。MenuContainer决定菜单的大小、位置和对齐方式,MenuOption决定要显示的字符串、字体、颜色等。我还想为每个菜单选项添加一段代码,该代码决定单击菜单选项时将发生什么。因此,每个菜单选项都有自己的唯一代码,在创建新菜单选项时设置该代码。我该怎么做?我希望这样的事情可以奏效: MenuOption option1 = new MenuOption("Option1",f

因此,我正在使用自定义菜单制作一个应用程序。我有两种类型的类,MenuContainer类和MenuOption类。MenuContainer决定菜单的大小、位置和对齐方式,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()
,必须在类
菜单选项中声明该方法

像这样:

public class MenuOption {
    ...
    public void run() { /* default implementation does nothing */ }
    ...
}
现在,您的匿名子类覆盖了
run
方法,但是可以通过计算为type
MenuOption
的表达式调用该方法


用户是否单击了菜单选项是另一回事。但是如果您能够检测到这样的点击,只需在点击选项上调用
运行
方法。

您可以使用线程方法:

 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…这叫做子类型多态性,是面向对象编程中的一个关键概念。很高兴为您提供帮助。