仓酷云

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

[学习教程] JAVA教程之教您怎样使用Java Swing完成游戏开辟

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

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

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

x
你精通任何一门语言就最强大。现在来看,java的市场比C#大,C#容易入手,比较简单,java比较难  Java咖啡馆已倒闭很多光阴了,假如你已喜好上了Java这杯咖啡的滋味,那末记得常来哦。这一次,我们为人人筹办了一年夜杯喷鼻浓的咖啡――将以开辟一个“连连看”游戏为底本,和人人配合进修Java中Swing的用法,当你仔细咀嚼这杯咖啡后,你会发明,不仅Java这杯咖啡还别有一番风味,并且还学会了专业游戏的开辟办法,真是一举两得!

  为了让人人先睹为快,下图即是游戏的截图。人人能够下载游戏试玩(下载游戏程序;下载源文件),然后在命令行体例下利用java-jarkyodai.jar来运转。别的,还能够到我的主页http://www.ismyway.com高低载这个游戏的单机版和手机版举行试玩(见)。


  Java咖啡馆之前先容过AWT的常识,那末Swing和AWT事实有甚么区分呢?进修Java的人都大概听到或看到太重量级控件和轻量级控件这个字眼,AWT就是我们一般所指的分量级控件,Swing则是轻量级控件。

  我们都晓得Java的标语是“一次编写,各处运转”,这也就请求在我们的程序中,只管利用纯Java的代码。很不幸的是,AWT依附与当地平台的接口,因而,在分歧的操纵体系上,利用AWT制造的界面看起来大概会有些渺小区分。

  Swing则完整分歧了,Swing是用纯Java编写的,因而,利用Swing编写的界面能包管在一切平台上有着一样的表面。这里另有一个秘诀:在JDK中,为便于区分,一切Swing控件都以年夜写字母J开首,好比说JButton(AWT中对应的是Button),如许你就很简单辨别Swing控件和AWT控件了。
  Swing初体验

  关于想进修Swing编程的伴侣,我们专程为人人筹办了一些小秘诀。起首,下载并浏览代码是极有需要的。因为这是一篇关于Swing的教程,以是,我们只是尽量解说一些与Swing有关的内容,与Swing有关的内容一样平常不会触及,比方算法部分。

  其次,受篇幅限定,也不成能在这里将每部分代码都写得完完全整的,以是,人人也必要对比完全代码来看。最初,为了使人人更简单把精神会合在Swing进修上,我们也将游戏开辟中所需资本放鄙人载文件中,人人下载后便可以编译运转,看到实行了局。(下载游戏源文件)

  1、顶层容器

  甚么是顶层容器?当我们利用Java举行图形编程的时分,图在那里绘制呢?我们必要一个可以供应图形绘制的容器,这个容器就被称为顶层容器,你也能够把它设想成一个窗口。顶层容器是举行图形编程的基本,统统图形化的工具,都一定包含在顶层容器中。在Swing中,我们有三种可使用的顶层容器,它们分离是:

・JFrame:用来计划相似于Windows体系中的窗口情势的使用程序。

・JDialog:和JFrame相似,只不外JDialog是用来计划对话框。

・JApplet:用来计划能够在嵌进在网页中的Java小程序。

  假如必要利用Swing制造一个窗口类程序,我们的代码看起来应当是如许:
  1. importjavax.swing.*;publicclassKyodaiUIextendsJFrame{……}
复制代码
  2.控件

  控件是组成使用程序界面的基础元素,按钮、文本框、进度条等,这些都是控件。控件(这里我们只会商可视化控件)又能够分为容器控件和非容器控件。从字面意义下去了解,容器控件就是能包括其他控件的特别控件,比方,Java中的JPanel控件就属于容器型控件,我们能够在JPanel中安排按钮、文本框等非容器控件,你乃至能够在JPanel中再安排多少个JPanel控件(值得注重的是,顶层容器也是容器型控件,每个窗口使用程序中有且只能有一个顶层容器控件,换句话说,顶层容器不克不及包含在其他的控件中)。

  Java中的容器控件有良多,除方才提到的JPanel外,另有JTabbedPane、JScrollPane等,非容器控件有JButton、JLabel、JTextField等。假如你必要向某个容器型的控件中增加控件,你可使用add(Componentcomp)办法来完成,如:
  1. JPanelpanel=newJPanel();JButtonbutton=newJButton();panel.add(button);
复制代码
  3.结构

  甚么是结构?结构是Java顶用来把持控件分列地位的一种界面办理体系。利用过其他可视化编程开辟言语的人在初度打仗Java界面计划时,总会感到到Java界面计划很别扭:竟然没有供应所见即所得的设置控件坐标的办法!但是,现实证实,Java自己供应的结构办理体系也一样可以杰出地完成我们的必要,并且在跨平台时体现得更有上风。

  经常使用的结构有:

  ・BorderLayout:将界面支解为高低摆布和两头一块地区的办理体系,在BorderLayout结构中,最多你只能放5个控件,假如凌驾5个控件,倡议仍是选用其他的结构体系吧。

  ・GridLayout:GridLayout是将用户界面切割为棋盘一样的结构办理体系。假如我们要计划一个相似于Windows中自带的盘算器软件,GridLayout无疑是最好选择。

  ・FlowLayout:FlowLayout与上述两类结构办理体系不太一样,在FlowLayout中,你不用指定每一个控件放在哪,你只必要把控件到场到FlowLayout中,FlowLayout就会依据你增加控件的按次顺次安排控件,假如空间不敷,会主动换行。
  在对这几个结构办理体系有了基础熟悉后,我们就一同来进进界面计划吧。在细心察看了QQ游戏中“连连看”的设定后,我们能够发明,全部界面分为三个区,顶部是体系菜单区,占空中积最年夜的是用户游戏区,别的另有一个用户交互区,每一个地区中都由多少控件构成。

  这么多控件,我们从哪入手下手动手呢?因为容器控件中能够安排其他控件,因而,我们只必要先断定安排的容器控件就能够了。

  既然已晓得必要利用容器控件的个数,接上去让我们就进进结构办理体系的选择。用GridLayout?仿佛有点委曲,用FlowLayout?另有更好的选择吗?对了,我想你必定想到了是BorderLayout吧,以下所示。

  下手之前,人人必定要注重的是,界面的计划要先思索好尺寸,不论是主程序界面的巨细仍是每一个地区的巨细,假如没有计划好符合的尺寸,未来修改起来会非常疾苦。上面即是响应的源程序:
  1. importjava.awt.*;importjavax.swing.*;publicclassKyodaiUIextendsJFrame{publicKyodaiUI(){this.setSize(780,500);//将窗体的巨细设定为780*500this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setResizable(false);//窗体不克不及改动巨细this.setTitle("连连看");//设置题目JPaneltoolBar=newJPanel();toolBar.setBackground(Color.white);toolBar.setPreferredSize(newDimension(780,48)); JPanelactionPanel=newJPanel();//新建JPanel型的控件actionPanel.setBackground(Color.yellow);//设置背景致actionPanel.setPreferredSize(newDimension(160,380));//设置巨细 JPanelcontentPanel=newJPanel();contentPanel.setBackground(Color.blue);contentPanel.setPreferredSize(newDimension(620,380));this.getContentPane().add(toolBar,BorderLayout.NORTH);this.getContentPane().add(actionPanel,BorderLayout.EAST);this.getContentPane().add(contentPanel,BorderLayout.CENTER);}  publicstaticvoidmain(String[]args)throwsHeadlessException{KyodaiUIkyodaiUI=newKyodaiUI();kyodaiUI.show();}}
复制代码
  让我们来看看下面这段程序是怎样运转的。起首,extendsJFrame标明了这是从JFrame中承继过去的,JFrame是最基础的顶层容器控件。实践上,在JDK中,以字母J打头的控件都是Swing控件。

  然后设置了容器的属性,个中,setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)是用来告知Java假造机,当用户点击窗体右上角的“封闭”按钮时,封闭该窗口历程。假如不这么做的话,你会发明固然你能够点将窗口封闭,但是程序却没有加入。

  在接上去的代码中,我们为顶层容器增加了三个Panel容器。要注重的是,在AWT中,我们能够间接写为add(toolBar,BorderLayout.NORTH),而在Swing中却必定要写成getContentPane().add(toolBar,BorderLayout.NORTH),不然程序就会堕落。

  如今人人能够放在编译运转看看,是否是和我的运转了局一样(见)

  4.边框

  固然我们利用了分歧远景色来区分分歧的地区,但是却没有条理感,加上边框必定会大度很多。

  在Java中,一切以J打头的Swing控件都可使用setBorder办法来为本人设置边框。边框有良多种,线型、凹陷、凹下、空的,你乃至能够自在组合构成团体作风。一切的Border都必需利用javax.swing.BorderFactory中供应的静态办法来创立,好比:
  1. Borderborder=BorderFactory.createBevelBorder(BevelBorder.LOWERED,newColor(45,92,162),newColor(43,66,97),newColor(45,92,162),newColor(84,123,200));
复制代码
  如今,我们将toolBar.setBackground(Color.white)改成toolBar.setBorder(border),平面效果是否是已呈现了?
  实战――写上本人的台甫

  如今我们已有了一个可以运转的界面了,固然它甚么也做不了,可是请你别慌,罗马不是一天建成的。

  如今让我们在菜单区供应一个“关于”菜单,用来显现程序的信息,岂非你不想让他人晓得你的台甫吗?Swing自己就供应了现成的按钮控件JButton,我们只必要创立一个新的按钮:JButtonabout=newJButton("关于");这个按钮该怎样放到菜单区而不是其余中央呢?

  我们能够到场上面的代码:toolBar.add(about);咦,怎样点按钮没有反响?这是由于你还没有告知程序点击按钮时要做甚么事变呢。要为按钮增加事务呼应,起首必要利用about.addActionListener(this)来告知程序监听按钮按下时的事务,因为ActionListener是一个程序接口,因而,我们在类的声名的中央也得做一点小小的修正:publicclassKyodaiUIextendsJFrameimplementsActionListener{...}完成ActionListener接口是为了告知程序我要举行事务处置了。固然,最初我们得增加呼应事务的代码:
  1. publicvoidactionPerformed(ActionEvente){if(e.getSource()==about){JOptionPane.showMessageDialog(this,"我的台甫","关于",JOptionPane.INFORMATION_MESSAGE);return;}}
复制代码
  个中,e.getSource()暗示以后触发事务的控件,因为我们的程序中常常会有多个以上的控件,这些控件都有大概发生事务,以是我们必需利用这个办法来找到发生事变的控件。

  小结

  让我们一同往返顾一下明天所学的内容:起首我们懂得了顶层容器,也晓得了控件分为容器控件和非容器控件,同时还晓得利用边框,最初,我们还小小的处置了一下按钮的事务。

  学而时习之,不亦说乎,就让我留点小小的功课,匡助人人牢固一下明天所学的内容:下面我们增加的按钮在菜单栏的两头,其实不美妙,请人人放到右边或右侧尝尝。

  最初向人人供应一些对照好的参考材料:

●CreatingaGUIwithJFC/Swing

http://java.sun.com/docs/books/tutorial/uiswing/index.html

●2DGraphics

http://java.sun.com/docs/books/tutorial/2d/index.html

●JDKAPI

http://java.sun.com/j2se/1.4.2/docs/api/index.html

而学习JAVA我觉得最应该避免的就是:只学习,不思考,只记忆,不实践!
谁可相欹 该用户已被删除
沙发
发表于 2015-1-20 16:18:13 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
admin 该用户已被删除
板凳
发表于 2015-1-29 12:56:39 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
蒙在股里 该用户已被删除
地板
发表于 2015-2-2 13:07:24 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
兰色精灵 该用户已被删除
5#
发表于 2015-2-7 20:45:37 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
若天明 该用户已被删除
6#
发表于 2015-2-23 10:25:43 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
不帅 该用户已被删除
7#
发表于 2015-3-7 08:01:18 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
第二个灵魂 该用户已被删除
8#
发表于 2015-3-14 15:01:50 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
萌萌妈妈 该用户已被删除
9#
 楼主| 发表于 2015-3-21 10:46:24 | 只看该作者
是一种使用者不需花费很多时间学习的语言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-14 22:25

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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