仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 938|回复: 20
打印 上一主题 下一主题

[学习教程] 来看java菜单完成

[复制链接]
山那边是海 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:35:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
从一个编程语言的普及程度来将,一个好的IDE是至关中要的,而现在的java的IDE虽然已经很好了,但是和.net网页编程比起来还是稍微差一些的,这是个客观事实。java要想普及的更好。DE是必须加以改进的。
间接在程序片中安置一个菜单是不成能的(Java1.0,Java1.1和Swing库不同意),由于它们是针对使用程序的。持续,假如您不信任我而且断定在程序片中能够公道地具有菜单,那末您能够往实验一下。程序片中没有setMenuBar()办法,而这类办法是附在菜单中的(我们会看到它能够公道地在程序片发生一个帧,而且帧包括菜单)。
有四种分歧范例的MenuComponent(菜单组件),一切的菜单组件劈头于笼统类:菜单条(我们能够在一个事务帧里具有一个菜单条),菜单往安排一个独自的下拉菜单大概子菜单、菜单项来讲明菜单里一个单个的元素,和劈头于MenuItem,发生反省标记(checkmark)往显现菜单项是不是被选择的CheckBoxMenuItem。
分歧的体系利用分歧的资本,对Java和AWT而言,我们必需在源代码中手工汇编一切的菜单。
  1. //:Menu1.java
  2. //MenusworkonlywithFrames.
  3. //Showssubmenus,checkboxmenuitems
  4. //andswappingmenus.
  5. importjava.awt.*;
  6. publicclassMenu1extendsFrame{
  7. String[]flavors={"Chocolate","Strawberry",
  8. "VanillaFudgeSwirl","MintChip",
  9. "MochaAlmondFudge","RumRaisin",
  10. "PralineCream","MudPie"};
  11. TextFieldt=newTextField("Noflavor",30);
  12. MenuBarmb1=newMenuBar();
  13. Menuf=newMenu("File");
  14. Menum=newMenu("Flavors");
  15. Menus=newMenu("Safety");
  16. //Alternativeapproach:
  17. CheckboxMenuItem[]safety={
  18. newCheckboxMenuItem("Guard"),
  19. newCheckboxMenuItem("Hide")
  20. };
  21. MenuItem[]file={
  22. newMenuItem("Open"),
  23. newMenuItem("Exit")
  24. };
  25. //Asecondmenubartoswapto:
  26. MenuBarmb2=newMenuBar();
  27. MenufooBar=newMenu("fooBar");
  28. MenuItem[]other={
  29. newMenuItem("Foo"),
  30. newMenuItem("Bar"),
  31. newMenuItem("Baz"),
  32. };
  33. Buttonb=newButton("SwapMenus");
  34. publicMenu1(){
  35. for(inti=0;i<flavors.length;i++){
  36. m.add(newMenuItem(flavors[i]));
  37. //Addseparatorsatintervals:
  38. if((i+1)%3==0)
  39. m.addSeparator();
  40. }
  41. for(inti=0;i<safety.length;i++)
  42. s.add(safety[i]);
  43. f.add(s);
  44. for(inti=0;i<file.length;i++)
  45. f.add(file[i]);
  46. mb1.add(f);
  47. mb1.add(m);
  48. setMenuBar(mb1);
  49. t.setEditable(false);
  50. add("Center",t);
  51. //Setupthesystemforswappingmenus:
  52. add("North",b);
  53. for(inti=0;i<other.length;i++)
  54. fooBar.add(other[i]);
  55. mb2.add(fooBar);
  56. }
  57. publicbooleanhandleEvent(Eventevt){
  58. if(evt.id==Event.WINDOW_DESTROY)
  59. System.exit(0);
  60. else
  61. returnsuper.handleEvent(evt);
  62. returntrue;
  63. }
  64. publicbooleanaction(Eventevt,Objectarg){
  65. if(evt.target.equals(b)){
  66. MenuBarm=getMenuBar();
  67. if(m==mb1)setMenuBar(mb2);
  68. elseif(m==mb2)setMenuBar(mb1);
  69. }
  70. elseif(evt.targetinstanceofMenuItem){
  71. if(arg.equals("Open")){
  72. Strings=t.getText();
  73. booleanchosen=false;
  74. for(inti=0;i<flavors.length;i++)
  75. if(s.equals(flavors[i]))chosen=true;
  76. if(!chosen)
  77. t.setText("Chooseaflavorfirst!");
  78. else
  79. t.setText("Opening"+s+".Mmm,mm!");
  80. }
  81. elseif(evt.target.equals(file[1]))
  82. System.exit(0);
  83. //CheckboxMenuItemscannotuseString
  84. //matching;youmustmatchthetarget:
  85. elseif(evt.target.equals(safety[0]))
  86. t.setText("GuardtheIceCream!"+
  87. "Guardingis"+safety[0].getState());
  88. elseif(evt.target.equals(safety[1]))
  89. t.setText("HidetheIceCream!"+
  90. "Isitcold?"+safety[1].getState());
  91. else
  92. t.setText(arg.toString());
  93. }
  94. else
  95. returnsuper.action(evt,arg);
  96. returntrue;
  97. }
  98. publicstaticvoidmain(String[]args){
  99. Menu1f=newMenu1();
  100. f.resize(300,200);
  101. f.show();
  102. }
  103. }///:~
复制代码
在这个程序中,我制止了为每一个菜单编写典范的冗杂的add()列表挪用,由于那看起来像很多的无用的标记。取而代之的是,我安置菜单项到数组中,然后在一个for的轮回中经由过程每一个数组挪用add()复杂地跳过。如许的话,增添和削减菜单项变得没那末厌恶了。
作为一个可选择的办法(我发明这很难令我中意,由于它必要更多的分派)CheckboxMenuItems在数组的句柄中被创立是被称为平安创立;这对数组文件和别的的文件而言是真实的平安。
程序中创立了不是一个而是二个的菜单条来证实菜单条在程序运转时能被互换激活。我们能够看到菜单条如何构成菜单,每一个菜单如何构成菜单项(MenuItems),chenkboxMenuItems大概别的的菜单(发生子菜单)。当菜单组合后,能够用setMenuBar()办法安装到如今的程序中。值得注重的是当按钮被压下时,它将反省以后的菜单安装利用getMenuBar(),然后安置别的的菜单条在它的地位上。
当测试是“open”(即入手下手)时,注重拼写和年夜写,假如入手下手时没有对象,Java收回noerror(没有毛病)的旌旗灯号。这类字符串对照是一个分明的程序计划毛病源。
校验和非校验的菜单项主动地运转,与之相干的CheckBoxMenuItems实在使人受惊,这是由于一些缘故原由它们不同意字符串婚配。(这仿佛是自相冲突的,只管字符串婚配并非一种很好的举措。)因而,我们能够婚配一个方针对象而不是它们的标签。当演示时,getState()办法用来显现形态。我们一样能够用setState()改动CheckboxMenuItem的形态。
我们大概会以为一个菜单能够公道地置进凌驾一个的菜单条中。这看似公道,由于一切我们疏忽的菜单条的add()办法都是一个句柄。但是,假如我们试图如许做,这个了局将会变得十分的别扭,而远非我们所但愿失掉的了局。(很难晓得这是一个编程中的毛病大概说是他们试图使它以这类办法往运转所发生的。)这个例子一样向我们展现了为何我们必要创建一个使用程序以替换程序片。(这是由于使用程序能撑持菜单,而程序片是不克不及间接利用菜单的。)我们从帧处承继取代从程序片处承继。别的,我们为类建一个构建器以代替init()安装事务。最初,我们创立一个main()办法而且在我们建的新型对象里,调剂它的巨细,然后挪用show()。它与程序片只在很小的中央有分歧的地方,但是这时候它已是一个自力的设置窗口使用程序而且我们可使用菜单。
但是一些大型开发或者是保密型比较高的项目都会用java,原因有2点,一:java是开源的,不怕别人留后门,偷我工具,.net网页编程就不一样了,保持微软的一向风格,源代码不公开
第二个灵魂 该用户已被删除
沙发
发表于 2015-1-21 10:40:38 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
小妖女 该用户已被删除
板凳
发表于 2015-1-30 15:38:59 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
admin 该用户已被删除
地板
发表于 2015-2-4 06:39:51 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
柔情似水 该用户已被删除
5#
发表于 2015-2-4 21:02:33 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
老尸 该用户已被删除
6#
发表于 2015-2-5 15:57:38 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
简单生活 该用户已被删除
7#
发表于 2015-2-12 20:29:42 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
再见西城 该用户已被删除
8#
发表于 2015-2-16 23:49:47 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
爱飞 该用户已被删除
9#
发表于 2015-2-23 09:02:09 | 只看该作者
是一种为 Internet发展的计算机语言
精灵巫婆 该用户已被删除
10#
发表于 2015-2-26 23:39:33 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
莫相离 该用户已被删除
11#
发表于 2015-3-8 18:28:19 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
若天明 该用户已被删除
12#
发表于 2015-3-16 10:06:14 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
愤怒的大鸟 该用户已被删除
13#
发表于 2015-3-17 09:00:14 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
灵魂腐蚀 该用户已被删除
14#
发表于 2015-3-24 03:49:47 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
蒙在股里 该用户已被删除
15#
发表于 2015-3-27 08:09:18 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
若相依 该用户已被删除
16#
发表于 2015-3-30 11:02:34 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
不帅 该用户已被删除
17#
发表于 2015-4-3 20:36:21 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
只想知道 该用户已被删除
18#
发表于 2015-4-4 14:03:42 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
小女巫 该用户已被删除
19#
发表于 2015-4-7 20:31:16 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
变相怪杰 该用户已被删除
20#
发表于 2015-4-13 02:51:45 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 18:54

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表