帮忙解释下两个初学的小程序代码

问题描述

importjava.awt.*;classFirstWindowextendsFrame{MenuBarmenubar;Menumenu;MenuItemitem1,item2;FirstWindow(Strings){setTitle(s);Toolkittool=getToolkit();Dimensiondim=tool.getScreenSize();setBounds(0,0,dim.width,dim.height/2);menubar=newMenuBar();menu=newMenu("文件");item1=newMenuItem("打开");item2=newMenuItem("保存");menu.add(item1);menu.add(item2);menubar.add(menu);setMenuBar(menubar);setVisible(true);}}publicclassExample7_1{publicstaticvoidmain(Stringargs[]){FirstWindowwin=newFirstWindow("一个带菜单的窗口");}}上面的这个程序,程序入口应该:publicstaticvoidmain(Stringargs[]){FirstWindowwin=newFirstWindow("一个带菜单的窗口");}那么入口函数进去了执行newFirstWindow("一个带菜单的窗口")方法,程序是怎么去执行第一个FirstWindow类的呢,我感觉好像没有去调用或执行第一个类啊。即便是通过newFirstWindow("一个带菜单的窗口")这句话去调用了一个类的FirstWindow(Strings),方法,那么这个方法前面的MenuBarmenubar;Menumenu;MenuItemitem1,item2;这些语句也没有执行,那么后面怎么能直接用menubar,menu,item1,item2这些对象呢?原理上有些不明白,麻烦来帮解释下.第二个程序:importjava.awt.*;classWindowTextextendsFrame{TextFieldtext1,text2;WindowText(Strings){super(s);setLayout(newFlowLayout());text1=newTextField("输入密码:",10);text1.setEditable(false);text2=newTextField(10);text2.setEchoChar('*');add(text1);add(text2);setBounds(100,100,200,150);setVisible(true);validate();}}publicclassExample7_2{publicstaticvoidmain(Stringargs[]){WindowTextwin=newWindowText("添加了文本框的窗口");}}程序中的这些代码:add(text1);add(text2);setBounds(100,100,200,150);setVisible(true);怎么能直接用方法呢,我感觉应该是用“对象.add(text1);对象.add(text2);对象.setBounds(100,100,200,150);”这样的格式,即对象加点来调用这些方法才对吧?第三个问题:java中的“焦点”(比如获得文本框中的输入焦点)究竟是什么意思,麻烦用通俗易懂的话来解释下,谢谢

解决方案

解决方案二:
/*在你FirstWindowwin=newFirstWindow("一个带菜单的窗口");时就已经执FirstWindow(Strings),这个构选函数的啊.而在构造函数前就已经执行了MenuBarmenubar;Menumenu;MenuItemitem1,item2*/

add(text1);add方法是从Frame继承过来的光标停留在输入框时,这里该输入框就有输入焦点
解决方案三:
...
解决方案四:
第一个:MenuBarmenubar;Menumenu;MenuItemitem1,item2;这几个东西只是声明了几个变量而已,真正用到的是在程序中实例化的时候。menubar=newMenuBar();menu=newMenu("文件");item1=newMenuItem("打开");item2=newMenuItem("保存");你要想理解变量的东西,你要知道程序的运行机制,其实那几个变量时在内存中创建了,需要了解一点操作系统的知识。第三个:"焦点"通俗的讲就是让人家把目光集中到你身上,在图形用户界面中就是把输入的权利赋予某个文本域之类的。
解决方案五:
引用1楼soleisure的回复:

Javacode/*在你FirstWindowwin=newFirstWindow("一个带菜单的窗口");时就已经执FirstWindow(Strings),这个构选函数的啊.而在构造函数前就已经执行了MenuBarmenubar;Menumenu;MenuItemitem1,item2*/

还是有些不明白你的解释,明明程序执行是从main函数开始,感觉第一个类应该没有执行。你的意思是说在程序运行FirstWindowwin=newFirstWindow("一个带菜单的窗口")这条语句的同时去调用FirstWindow(Strings)这条语句吗??
解决方案六:
应该说是去实例化一个FirstWindow对象,而那些变量都在实例化的过程中被声明了
解决方案七:
第一个:FirstWindow()是构造方法,是用来给属性初始化的。menubar等是该类的属性,该类的所有方法都是可以访问它们。第二个:this.可以省略。第三个:“焦点”就是鼠标光标停留的位置。
解决方案八:
第一个问题classFirstWindowextendsFrameFirstWindow继承Frame你用的应该是JAVA的AWT也就是说你的FirstWindow拥有父类Frame的所有方法FirstWidnow()是你的FirstWidnow类中的构造函数....在Main主函数中FirstWindowwin=newFirstWindow("一个带菜单的窗口");创建的是一个FirstWindow的实例....Main函数在执行这条语句后会调用构造函数里面的内容,你代码的意思是在这个窗口中添加菜单条,菜单,菜单项.....这些语句的实现由编辑程序帮你完成...程序运行后你就可以看见你的窗口中有你添加的这些组件.......
解决方案九:
第二问题.....是可以直接用方法的..如果在逻辑上面你想不通,也可以使用this.add()this代表的就是当前类的实例对象....类是不能直接使用对应方法的只有实例化后产生对象后才能使用对应Class的方法你代码里面的方法来源于WindowText这个类而这个类是你自定义的是没有法方可以用的..应为他继承Frame所以它拥有Frame的所有法方...子类可以拥有父类的所有法方,并且拥有自己独有的方法...继承方面的问题...
解决方案十:
第三个问题...焦点就是鼠标停留的位子我是这么理解的....相关方面的有焦点事件.获取焦点事件...
解决方案十一:
你在类调用地方法地时候可以不用对象.方法名,不管是继承地方法和自己定义地,只是这样会很模糊,不清楚方法是谁地,所以都是默认用对象.方法名!
解决方案十二:
heihei
解决方案十三:
上面几位说的都挺明白的了。

时间: 2024-09-20 19:59:41

帮忙解释下两个初学的小程序代码的相关文章

跪求-谁能帮忙解释下android中的TranslateAnimation相关的下面代码,谢谢!!!

问题描述 谁能帮忙解释下android中的TranslateAnimation相关的下面代码,谢谢!!! @Override10 public void onPageSelected(int arg0) {11 Animation animation = null;12 switch (arg0) {13 case 0:14 if (currIndex == 1) {15 animation = new TranslateAnimation(one 0 0 0);16 } else if (cu

oracle11g-linux安装oracle11 rac集群,报错,请专家帮忙解释下是哪里问题,感谢

问题描述 linux安装oracle11 rac集群,报错,请专家帮忙解释下是哪里问题,感谢 解决方案 图太小,看不清,建议参考:http://blog.chinaunix.net/uid-14779297-id-1988248.html 解决方案二: http://wenku.baidu.com/link?url=DpFOy89l9FBzJo0qul70p81mRk9vXwjlNNgISVaKRSSyPKGy9Yoq389lRVG9sXLeRaWl7j71IGIhRnYt9SJlOKtpT22

哪位高手可以帮忙解释下try{}和catch{}的作用用法吗?

问题描述 小弟初学,哪位高手可以帮忙解释下try{}和catch{}的作用用法吗?不胜感激. 解决方案 解决方案二:如果try{}的{}中的语句在执行的过程中产生了异常(有很多种类),那么catch{}就可以把这个异常捕捉,当然这些异常有很多的种类,可以针对可能发生的不同的异常确定catch(){}的()中的参数类型,然后在{}中处理这些可能发生的异常.解决方案三:try语法简单点解释就是试试.当然试试的结果有可能成,有可能不成,所以有个catch.catch可以捕捉不同的失败原因.例如:try

xml-XML文件问题,请大神看下并帮忙解释下,感激不尽

问题描述 XML文件问题,请大神看下并帮忙解释下,感激不尽 XML文件问题,下边两段bean代码,我新手不理解,请大神看下并帮忙解释下,感激不尽 <bean id="dingDanDengJiDao" class="com.sysgrrj.module.DingDanDengJi.dao.DingDanDengJiDao"> <property name="sessionFactory"> <ref bean=&qu

java中的一个随机函数,看不懂帮忙解释下

问题描述 java中的一个随机函数,看不懂帮忙解释下 public void suiji() { int m,n,k=0,k1,k2,k3; for(m=1;m<=15;m++) { k1=(int)(Math.random()*25+1); for(n=1;n<=2;n++) { k2=(int)(Math.random()*6+1); k3=(int)(Math.random()*5+1); while(d[k2][k3])!=0&&k!30) { k2=(int)(Mat

哪位高手可以帮忙解释下overload和override的作用用法吗?

问题描述 小弟初学,哪位高手可以帮忙解释下overload和override的作用用法吗?谢谢,不好意思. 解决方案 解决方案二:override是要扩展或修改继承的方法,属性,索引器或事件的抽象实现或虚方法必须使用的修饰符

对象-java 抽象类有段代码没看懂!!!帮忙解释下

问题描述 java 抽象类有段代码没看懂!!!帮忙解释下 自己看视频自学到网络编程,发现下边的代码看不懂,自己也百度了很多,还是没理解好抽象类 OutputStream os=Socket.getOutputSteam(); os.write("加油".getBytes()): 这段代码没看懂,OutputStream抽象类不能直接创建对象,也没有子类去实现,为什么可以直接调用write(byte[] b) 方法? 解决方案 不能创建对象的意思是不能通过new outputstream

new regexp()-求大虾们帮忙解释下有关compile的正则表达式代码

问题描述 求大虾们帮忙解释下有关compile的正则表达式代码 function(str) { //str= http://localhost:63342/erajs.examples/./ccs/html/CcsDealInput.html var RegUrl = new RegExp(); RegUrl.compile("^[A-Za-z]+://[A-Za-z0-9-_]+.[A-Za-z0-9-_%&?/.=]+$"); if (!RegUrl.test(str))

java后台逻辑问题-求大神帮忙解释下这段代码。

问题描述 求大神帮忙解释下这段代码. 这是一个从表添加页面的代码.currentx是当前页数.我想问下 st st1 st2 st3是什么意思,就是split(:):这个方法我不是很清楚什么意思,还有下面的!ss.equals("t") t是什么. 传参什么的我晓得. @RequestMapping("/addProcess.do") public String addProcessMaintenance(String currentx, String ids, S