Java Swing组件全演示
当前位置:以往代写 > JAVA 教程 >Java Swing组件全演示
2019-06-14

Java Swing组件全演示

Java Swing组件全演示

副标题#e#

一 抛砖引玉

本文指在操作一个小措施”Swing 组件大全”来引导各人进修Java这门语言,熟悉Java Swing的各个组件。并在进修进程中参考作者设计这一措施的要领和思想,最终形本钱身的思维方法和进修方法。你能举一返三是作者最开心的工作。小措施演示了Java Swing大部门组件。最后附上了全部代码及具体的注释说明。但愿本文能对各人进修Java有所辅佐。

跟着Java风潮囊括海内,进修Java的要领和路径越来越多。而在大量的书本前,在Java复杂的类库前大各人都有点迷失偏向的感受,是学J2EE,J2ME照旧。。。。。。然而所有的这些都或多或少的离不开J2SE。万丈高楼平地起。J2SE是整个Java的基本,学好了这个对Java的各个偏向都是很有利的。而进修J2SE的最初点就在界面设计,因为界面编程是你来感受最直接的手段,是提高各人编程乐趣的很好开始,因为你写完措施编译后可顿时看到本身的成就。而不像靠山编程做完了都感觉不到结果。而好的界面也是你测试你其他措施的基本。

界面设计!不就是拖拉操纵吗?假如是VB,VC等可视化的编程,简直只是一些拖拉操纵,由于Java语言的设计中所有的对象都是措施代码,在Java中假如想要设计一个好的界面,可不是简朴的拖拉操纵能完成的。纵然利用了如JBuilder这么强大的可视化东西,你也得亲自动手写一些界面设计代码才气很好的完成你的任务。假如你能在此基本上领略Java界面设计的思想,对你进修这门语言将有莫大的辅佐。

Java界面设计主要涉及Awt,Swing两大类库,Swing是Awt的扩展和成果增强。下面我们就以Swing为基本来说说整个Java的界面设计。

二 感觉结果

在开始之前,让我们看看这篇文章要到达的结果,有了方针和成就才有进修的乐趣,起码我是这样认为和进修的。如下图所示,这就是我们设计的界面,它包罗了Swing中大部门常用的组件。有些成果界面上反应不出来,各人可实验编译源代码点南击各个部门,看看它们的响应事件。

Java Swing组件全演示

三 设计思想和要领

不知道各人(一般是初学者)在看编程书籍的时候有这种体会没有:在看的进程中,仿佛大部领略了,而且效率还不错,但是转头来要本身写个和书上一样的措施出来,大概不少人只有从头拿书照打的了;有些人在照书上打过了一遍,也好像领略了。可转头来真正到用的时候,仿佛又不记得了。作者本人在初学编程时就经验过许多次这种环境。

追其原因,无外乎没有交融意会所学的常识,编程最讲究动手二字,动手的真正意义在于写本身所想所了解的措施而不是copy现成的措施。因为只有颠末本身思考,设计才气把书上的常识真正溶入本身的大脑。下面我们以”Swing 组件大全”来说说这个要领和思想。

在看完书上先容的Swing组件这章后,我心中对Swing或许有了个相识,只差动手了。而本人又不想照书上的例子一个个来试。于是就想到了做个措施把书上先容的所有组件放到一个界面来,并实验用到书上先容的所有要领。

砍柴不误磨刀功!在开始这前,我手画了一份设计图纸,如上面界面所示(虽然没那么大度了)。并用简朴的软件工程思想对布局举办了或许的分别。这里把整个界面分别为一个主模块和五大子模块。所有的子模块都是担任至相应的容器,主模块SwingTest既是打点模块也是主界面,担任JFrame主框架,打点自己的属性及JFrame上的其他子模块。MenuTest子模块担任至JmenuBar认真菜单的显示和事件处理惩罚。其他子模块担任至JPanel,打点安排在其上的组件的机关和显示。从子模块的名字各人也可看到他们的位置和成果。如下图所示:

Java Swing组件全演示 

在编写措施前想好布局和思路是个很好的习惯,它将会帮你大大淘汰事情量,提高措施的可读性和效率。


#p#副标题#e#

四 容器,机关打点器,嵌板

Swing中所有的组件都是放到容器中,主要的容器包罗:JFrame,JPanel,JWindow,JDialog,JPanle。JFrame是java的主框架,险些所有的Java应用措施界面都是在主框架之中设计的。有些容器并非一层,而由几层嵌板构成,本文将会用到个中在个:拆分嵌板(JSplitPane),内容嵌板, 页签式嵌板(TabbedPane)

拆分嵌板:按指定的偏向和方法拆分其内的两个子组件,记着一个拆分嵌板只能拆分两个子组件,假如想要拆分三个,各人本身先想一想步伐。本节最后给出了谜底。

内容嵌板: JFrame,Jwindow,Jdialog就是上面提到的有多层嵌板的容器,假如要在这些容器上面安排组件,必需安排在他们的内容嵌板(pane)上。我们通过函数getContentPane()可获得当前容器的内容嵌板。

页签式嵌板:这个嵌板如同卡片,在上面提供文件夹式的页签,当前只显示一页,如要进入下一页,只要点击上面的页签。

有些如JPanel是可以直接安排组件的容器。所以不需要利用嵌板。

#p#分页标题#e#

假如要按本身的想法分列放在容器上的组件,我们必需利用到机关打点器(Layout)来举办打点。Java系统默认的机关打点器为界线打点器(BorderLayout)。它把版面分为五大块,中央区域(Center),顶端(North),底部(South),左侧(West),右侧(East),细心的你大概会发明我们的主界面就是用的这个机关架构。其他的几个机关打点器有:

流机关(FlowLayout):把其内的组件按从左到右,从上到下的流方法分列。

网格机关(GridLayout):把组件安排到机关中的配置的每个网格中

无序网格机关(GridBagLayout):雷同于网格机关,但成果更强大也更巨大。能处理惩罚所有的机关。

假如你仔细调查会发明我们的主界面最右边会发明利用了网格机关。

下面来看看我们的主模块的结构函数代码,来感觉一下上面的布局设计。

public SwingTest()
   {
   // 初始化所有子模块
   MenuTest menuTest = new MenuTest();
   LeftPanel leftPanel = new LeftPanel();
   RightPanel rightPanel = new RightPanel();
   BottomPanel bottomPanel = new BottomPanel();
   CenterPanel centerPanel = new CenterPanel();
   // 配置主框架的机关
   Container c = this.getContentPane();
   // c.setLayout(new BorderLayout())
   this.setJMenuBar(menuTest);
   c.add(leftPanel,BorderLayout.WEST);
   c.add(rightPanel,BorderLayout.EAST);
   c.add(centerPanel,BorderLayout.CENTER);
   c.add(bottomPanel,BorderLayout.SOUTH);
   setSize(700,500);
   setTitle("Swing 组件大全简体版");
   // 埋没frame的标题栏,此功临时封锁,以利便利用window事件
   // setUndecorated(true);
   setLocation(200,150);
   show();
   }

如拆分三个子组件,可把一个拆分嵌板做为另一个拆分嵌板的子组件!

#p#副标题#e#

五 事件模子

在Swing 中每个组件都可触发事件,一旦触发事件会被一个或多个Listener(监听器)吸收。差异范例的事件别离由个此外class暗示。事件产生点可以和处理惩罚事件的代码分隔。

要想处理惩罚事件,只要发生Listener工具,并挪用组件的addXXXListener()要领注册事件。我们大部门是通过担任事件接口来处理惩罚事件的。可是担任Java接口我们必需实现出接口中的所有要领。有些接口包括了大量的函数,假如要一个个实现是件很贫苦的事件上,Java中界说了相应接口的Adapter接配器类来办理这种环境。接配器类已经帮我们实现了接口的所有要领,而我们只要担任接配器就可在代码内做我们想做的工作。也即只要实现或覆写我们想要实现的要领。

下面我们照旧以主模块为例,来处理惩罚封锁窗口事件。

// 操作无名内隐类,增加窗口事件
   this.addWindowListener(new WindowAdapter()
   {
   public void WindowClosing(WindowEvent e)
   {
   // 释放资源,退出措施
   dispose();
   System.exit(0);
   }
   });

如上所示,我们向主框架注册了一个窗口事件addWindowListener(),事件担任了WindowAdapter接配器,并重载了要领WindowClosing(),要领中操作dispose()释放窗口资源,System.exit(0)封锁窗口。

六 总结

好了,我们往返首一个我们的上面的内容:设计的思路,容器,嵌板,机关打点器, Swing组件的事件。

各人大白了为什么做项目能快速提高本身程度了吧。其实上面的要领道理和做项目差不多,任何事只要颠末本身的大脑思考,亲手操纵,想健忘并不是那么容易的了。相信看了本文和代码再辅以相关的书籍先容,各人对Swing处理惩罚会有必然的感性领略了。

开始动手吧。发挥你的天才思维,本身设计一个更好的Swing组件大全吧。虽然你也可在本措施的基本上完善个中更巨大的成果。好比:把树形列表内容用window文件资源器取代,把表格的处理惩罚和数据库相毗连或和相关数据毗连,让文本区可显示图片。。。。。哦,天啊。说不定一个好的产物也会因此降生。

再次强调开始之前请先设计你的界面,画出你的措施布局图。纵然再小的措施也请你或许勾一个它的表面。

七 详细代码

#p#分页标题#e#

由于代码中已经附上了较量具体的注释,在此就纷歧一表明说明白。在此要提醒各人在研究源代码时要留意几个巨大的组件的处理惩罚方法:如树形组件(JTree),表格(JTable),文本区(JtextArea),按时器(Timer)。为了利便各人直接复制源代码来编译,所有的模块都是放在一个主类中实现的。所有源代码的事件都是用嵌套的内隐类要领来实现的。假如各人不习惯这种写法,措施中已经消除了各模块之间的关联性,可很利便的把各子模块疏散成类文件。代码只是演示了Swing的大部组件,各个组件没有很深入的处理惩罚了。

    关键字:

在线提交作业