import java.awt.*;
class FirstWindow extends Frame  
{   MenuBar menubar;
    Menu menu;
    MenuItem  item1,item2;
    FirstWindow(String s) 
    { setTitle(s); 
      Toolkit tool=getToolkit(); 
      Dimension dim=tool.getScreenSize();
      setBounds(0,0,dim.width,dim.height/2);
      menubar=new MenuBar(); 
      menu=new Menu("文件");   
      item1=new MenuItem("打开");
      item2=new MenuItem("保存");          
      menu.add(item1);
      menu.add(item2);
      menubar.add(menu);
      setMenuBar(menubar); 
      setVisible(true);               
    }  
}
public class Example7_1
{   public static void main(String args[])
    {  FirstWindow win=new FirstWindow("一个带菜单的窗口"); 
    }
}
上面的这个程序,程序入口应该:
public static void main(String args[])
    {  FirstWindow win=new FirstWindow("一个带菜单的窗口"); }
那么入口函数进去了执行new FirstWindow("一个带菜单的窗口")方法,程序是怎么去执行第一个FirstWindow类的呢,我 感觉好像没有去调用或执行第一个类啊。即便是通过new FirstWindow("一个带菜单的窗口")这句话去调用了一个类的
 FirstWindow(String s),方法,那么这个方法前面的
MenuBar menubar;
    Menu menu;
    MenuItem  item1,item2;这些语句也没有执行,那么后面怎么能直接用menubar,menu,item1,item2这些对象呢?原理上有些不明白,麻烦来帮解释下.
第二个程序:
import java.awt.*;
class WindowText extends Frame 
{   TextField text1,text2;
    WindowText(String s) 
    { super(s);
      setLayout(new FlowLayout());
      text1=new TextField("输入密码:",10); 
      text1.setEditable(false);
      text2=new TextField(10);
      text2.setEchoChar('*');
      add(text1);
      add(text2);
      setBounds(100,100,200,150);
      setVisible(true);
      validate();
    }
}
public class Example7_2
{   public static void main(String args[])
    {  WindowText win=new WindowText("添加了文本框的窗口");
    }
}
程序中的这些代码:
      add(text1);
      add(text2);
      setBounds(100,100,200,150);
      setVisible(true);
怎么能直接用方法呢,我感觉应该是用“对象.add(text1);对象.add(text2);对象.setBounds(100,100,200,150);”这样的格式,即对象加点来调用这些方法才对吧?
第三个问题:
java中的“焦点”(比如获得文本框中的输入焦点)究竟是什么意思,麻烦用通俗易懂的话来解释下,谢谢

解决方案 »

  1.   


    /*在你FirstWindow win=new FirstWindow("一个带菜单的窗口");时就已经执FirstWindow(String s),这个构选函数的啊.而在构造函数前就已经执行了
        MenuBar menubar; 
        Menu menu; 
        MenuItem  item1,item2
    */
    add(text1);
    add方法是从Frame继承过来的光标停留在输入框时,这里该输入框就有输入焦点
      

  2.   

    第一个:
    MenuBar menubar;Menu menu;MenuItem  item1,item2;这几个东西只是声明了几个变量而已,真正用到的是在程序中实例化的时候。
    menubar=new MenuBar();
    menu=new Menu("文件");
    item1=new MenuItem("打开");
    item2=new MenuItem("保存");    
    你要想理解变量的东西,你要知道程序的运行机制,其实那几个变量时在内存中创建了,需要了解一点操作系统的知识。第三个:"焦点"通俗的讲就是让人家把目光集中到你身上,在图形用户界面中就是把输入的权利赋予某个文本域之类的。      
      

  3.   

    还是有些不明白你的解释,明明程序执行是从main函数开始,感觉第一个类应该没有执行。你的意思是说在程序运行FirstWindow win=new FirstWindow("一个带菜单的窗口")这条语句的同时去调用FirstWindow(String s)这条语句吗??
      

  4.   

    应该说是去实例化一个FirstWindow对象,而那些变量都在实例化的过程中被声明了
      

  5.   

    第一个:
    FirstWindow()是构造方法,是用来给属性初始化的。
    menubar等是该类的属性,该类的所有方法都是可以访问它们。第二个:
    this.可以省略。第三个:
    “焦点”就是鼠标光标停留的位置。
      

  6.   

    第一个问题 class FirstWindow extends Frame  
    FirstWindow 继承Frame  你用的应该是JAVA的AWT 也就是说你的FirstWindow拥有父类Frame的所有方法FirstWidnow()是你的FirstWidnow类中的构造函数....在Main主函数中 FirstWindow win=new FirstWindow("一个带菜单的窗口"); 创建的是一个FirstWindow的实例....Main函数在执行这条语句后 会调用构造函数里面的内容,你代码的意思是在这个窗口中添加菜单条,菜单,菜单项.....这些语句的实现由编辑程序帮你完成...程序运行后你就可以看见你的窗口中有你添加的这些组件.......
      

  7.   

    第二问题.....是可以直接用方法的..如果在逻辑上面你想不通,也可以使用this.add()
    this代表的就是当前类的实例对象....类是不能直接使用对应方法的 只有实例化后产生对象后才能使用对应Class的方法你代码里面的方法 来源于WindowText这个类 而这个类是你自定义的 是没有法方可以用的..应为他继承Frame 所以它拥有Frame的所有法方...子类可以拥有父类的所有法方,并且拥有自己独有的方法...继承方面的问题...