在阅读用JhotDraw创建的JModeller示例程序时,无法理解setClassNameFigure调用(红色部分)时的语法格式,急盼哪位仁兄指点!
 public class ClassFigure extends GraphicalCompositeFigure {
  ....     
 protected void setClassNameFigure(TextFigure newClassNameFigure) {
        myClassNameFigure = newClassNameFigure; 
 } protected void initialize() {
 ... 
 setClassNameFigure(new TextFigure() {
            public void setText(String newText) {
                super.setText(newText);
                getModellerClass().setName(newText);
                update();
            }
        });
 
 ...}...
}}

解决方案 »

  1.   

    看看内部类吧。
    承揽:网站开发,SEO优化,毕业设计,OA,ERP,空间,域名,企业级管理系统  业务范围:[.net] [java]
      

  2.   

    再说明一下:调用时参数new TextFigure()后面又跟了一个方法定义

                public void setText(String newText) { 
                    super.setText(newText); 
                    getModellerClass().setName(newText); 
                    update(); 
                } 
            }
    这种语法格式实在是不明白
      

  3.   


    public class ClassFigure extends GraphicalCompositeFigure {
      ....   
    protected void setClassNameFigure(TextFigure newClassNameFigure) {
            myClassNameFigure = newClassNameFigure;
    }protected void initialize() {
    ...
    setClassNameFigure(new TextFigure() {//匿名内部类
                public void setText(String newText) {
                    super.setText(newText);
                    getModellerClass().setName(newText);
                    update();
                }
            });
    ...}...
    }}
      

  4.   

    谢谢fire_frozen_me,shuaiAWP,licip三位朋友的指点!
      

  5.   

    嗯,这是典型的匿名内部类的用法与下面常用的这个控制
    窗口关闭写法类似:
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;import javax.swing.JFrame;public class T1 extends JFrame{
    public T1(){
    this.setVisible(true);
    this.addWindowListener(new WindowAdapter(){
    @Override
    public void windowClosing(WindowEvent e) {
    System.exit(0);
    }
    });
    }
    public static void main(String[] args) {
    new T1(); }
    }