|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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制造一个窗口类程序,我们的代码看起来应当是如许:- importjavax.swing.*;publicclassKyodaiUIextendsJFrame{……}
复制代码 2.控件
控件是组成使用程序界面的基础元素,按钮、文本框、进度条等,这些都是控件。控件(这里我们只会商可视化控件)又能够分为容器控件和非容器控件。从字面意义下去了解,容器控件就是能包括其他控件的特别控件,比方,Java中的JPanel控件就属于容器型控件,我们能够在JPanel中安排按钮、文本框等非容器控件,你乃至能够在JPanel中再安排多少个JPanel控件(值得注重的是,顶层容器也是容器型控件,每个窗口使用程序中有且只能有一个顶层容器控件,换句话说,顶层容器不克不及包含在其他的控件中)。
Java中的容器控件有良多,除方才提到的JPanel外,另有JTabbedPane、JScrollPane等,非容器控件有JButton、JLabel、JTextField等。假如你必要向某个容器型的控件中增加控件,你可使用add(Componentcomp)办法来完成,如:- 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吧,以下所示。
下手之前,人人必定要注重的是,界面的计划要先思索好尺寸,不论是主程序界面的巨细仍是每一个地区的巨细,假如没有计划好符合的尺寸,未来修改起来会非常疾苦。上面即是响应的源程序:- 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中供应的静态办法来创立,好比:- 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接口是为了告知程序我要举行事务处置了。固然,最初我们得增加呼应事务的代码:- 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我觉得最应该避免的就是:只学习,不思考,只记忆,不实践! |
|