`
xjlnjut730
  • 浏览: 56298 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

初学Swing的小总结

阅读更多

最近把Swing里的内容稍微看了一下,Swing里的基本元素有:

1.容器

顶层容器

顶层容器常见的有两种:

 I.窗体(JFrame),它可以直接出现在系统桌面上,其它组件必须直接或间接借助顶层容器才能显示出来。

 II.对话框(JDialog),这个比较常见。

非顶层容器

非顶层容器既可以做容器,又可以做组件,如面板(JPanel)。

一般说来不直接将普通组件直接添加到顶层容器中,虽然可以这么做。而是把复杂的界面分割,将某些功能相近或位置靠近的组件放到一个非顶层容器中,这样可以更好的操作界面,也增强了可维护性。

利用非顶层容器可以很方便的搭建界面,并且代码清晰、难度较小。因为开发一个界面的一小部分还是比较简单的,代码也易于维护。

一般一个JPanel都是一个具有相同功能的子界面或一些相似组件的组合。这样当遇到相似的开发时就可以直接重用,避免了重复开发。

(以下关于嵌板部分是从网上得到的,没有试过它的用法,感觉应该挺重要的)

Swing中所有的组件都是放到容器中,主要的容器包括:JFrame,JPanel,JWindow,JDialog,JPanle。JFrame是java的主框架,几乎所有的Java应用程序界面都是在主框架之中设计的。有些容器并非一层,而由几层嵌板组成,如:拆分嵌板(JSplitPane),内容嵌板, 页签式嵌板(TabbedPane)等。

  拆分嵌板:按指定的方向和方式拆分其内的两个子组件,记住一个拆分嵌板只能拆分两个子组件,如果想要拆分三个,大家自己先想一想办法。本节最后给出了答案。

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

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

  有些如JPanel是可以直接放置组件的容器。所以不需要使用嵌板。

2.普通组件

普通组件就是具有一定功能、但不担当容器的组件。

这类组件非常多,如标签(JLabel)、按钮(JButton)、文本框(JTextField)、文本域(JTextArea)等。

普通组件都有一些通用的方法,比较说setSize(),setBounds(),setVisible()等等。

 

Java Swing中处理各组件事件的一般步骤是: 

1.  新建一个组件(如JButton)。 

2.  将该组件添加到相应的面板(如JPanel)。 

3.  注册监听器以监听事件源产生的事件(如通过ActionListener来响应用户点击按钮)。 

4.  定义处理事件的方法(如在ActionListener中的actionPerformed中定义相应方法)。 

以上步骤我们可以用多种方法实现。但人们通常用两种方法。第一种方法是只利用一个监听器以及多个if语句来决定是哪个组件产生的事件;第二种方法是使用多个内部类来响应不同组件产生的各种事件,其具体实现又分两种方式,一种是匿名内部类,一种是一般内部类。 

利用一个监听器来处理事件的缺点是,当程序比较复杂时,需要一大串的if 语句来实现,程序代码较难阅读与维护。当然,如果处理的事件较少,这种方式比较简单。 

而使用匿名内部类同样存在许多另外的问题。首先,根据组件在代码中被定义的不同位置,类的定义以及处理事件的代码将分散在程序的各个部分,不是集中在一块,同样不便于阅读与维护。各事件的处理全部由嵌套的程序块组成,视觉上很难定位程序代码。如果事件处理程序比较复杂,内部类中的代码将变得很长,你将找不到相应的组件定义位置。最后,当工具栏、菜单栏目等需要处理同样的用户行为时,该方法将使代码更难维护。

 

一般开发的时候,有一段代码是最常用的到的:

this.setTitle(String title);//设置标题

this.setBounds(int x,int y,int width,int height);//设置窗体的位置

this.setVisible(true);//设置窗体可见

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置窗体关闭按钮的作用

多做一些就能把这个给记住了...

 

PS:总结的有点堆零零碎碎,有些是从网上找来的资料,不过基本概括了最近学的Swing的基本内容,可能非常浅显,另从网上看到了一些材料,才发现自己对Swing的理解还很不够,Swing创造性的采用了MVC(Model View Controller) 模式,理解这种模式才能对Swing有一个比较深入的领悟,正是由于这个机制,才使得Swing并不像表面看起来的那么差劲,Swing其实很强大!但是要理解这个MVC,要加以灵活运用,目前为止,自己的水平远远不能达到,而且暂时也没有时间去整理了,准备在Java其它部分的知识先有个大概的了解之后,再进行进一步的研究吧,下面提供了关于Swing资料的下载,是我从网上整理了,对Swing的MVC框架的理解应该有很大的帮助~~


参考资料:

分享到:
评论
49 楼 dxiao2 2009-08-02  
参考资料不如直接去看 sun 的 java tutorial 的 swing章节
48 楼 dxiao2 2009-06-14  
xjlnjut730 写道
dxiao2 写道
ps 我发现JDK 1.6 update 11开始 swing速度有飞跃


请问现在的swing跟之前的JDK1.<script type="text/javascript" src="http://www.iteye.com/javascripts/tinymce/themes/advanced/langs/zh.js"></script><script type="text/javascript" src="http://www.iteye.com/javascripts/tinymce/plugins/javaeye/langs/zh.js"></script>4版本的swing差别大么?我买了本java swing(第二版),里面是1.4版本的,不知道跟现在差距大不?


API的使用方面没什么大变动
47 楼 dxiao2 2009-06-14  
jinleileiking 写道
dxiao2 写道
我觉得swing还不错
使用起来也很方便 开发也相对容易 尤其是中大型的项目中
主要是结构清晰,完完全全按照mvc的构架进行开发。
给大家贴一张我们公司的软件界面 就是swing做的





能说一下这用的什么插件么?真炫。。


没有任何插件,完全都是自定义lookAndFeel 目前有2种感官 黑色的是比较成熟的 还有个白色的,有时候字会和背景重了。
个人感觉swing在自由度方面不差

46 楼 HeDYn 2009-06-14  
感觉swing没有些人说的那么差,觉得丑就用皮肤呀。
45 楼 jinleileiking 2009-06-14  
dxiao2 写道
我觉得swing还不错
使用起来也很方便 开发也相对容易 尤其是中大型的项目中
主要是结构清晰,完完全全按照mvc的构架进行开发。
给大家贴一张我们公司的软件界面 就是swing做的





能说一下这用的什么插件么?真炫。。
44 楼 xjlnjut730 2009-06-14  
fengqx 写道
谢谢楼主,


43 楼 fengqx 2009-06-14  
谢谢楼主,
42 楼 dogg 2009-06-14  
如果没有用过swing一年以上(含一年)做过项目(做产品是不同的),是没有资格来评论地
41 楼 xjlnjut730 2009-06-14  
dxiao2 写道
ps 我发现JDK 1.6 update 11开始 swing速度有飞跃


请问现在的swing跟之前的JDK1.4版本的swing差别大么?我买了本java swing(第二版),里面是1.4版本的,不知道跟现在差距大不?
40 楼 xjlnjut730 2009-06-14  
dxiao2 写道
我觉得swing还不错
使用起来也很方便 开发也相对容易 尤其是中大型的项目中
主要是结构清晰,完完全全按照mvc的构架进行开发。
给大家贴一张我们公司的软件界面 就是swing做的




哇,很不错~呵~
39 楼 dxiao2 2009-06-13  
ps 我发现JDK 1.6 update 11开始 swing速度有飞跃
38 楼 dxiao2 2009-06-13  
我觉得swing还不错
使用起来也很方便 开发也相对容易 尤其是中大型的项目中
主要是结构清晰,完完全全按照mvc的构架进行开发。
给大家贴一张我们公司的软件界面 就是swing做的


37 楼 jinleileiking 2009-06-11  
duker 写道
如果要做java 客户端, 没有特别的原因应该直奔javafx了..
javafx显然是受到了flex的刺激并借鉴了flash/flex 的一些优点发展起来的..
在客户端的表现力方面比swing强很多..
而且javafx是声明式的语法,效率要高很多..

还是喜欢以前java的语法,没接触jfx,看了看,感觉语法挺别扭的
36 楼 duker 2009-06-10  
如果要做java 客户端, 没有特别的原因应该直奔javafx了..
javafx显然是受到了flex的刺激并借鉴了flash/flex 的一些优点发展起来的..
在客户端的表现力方面比swing强很多..
而且javafx是声明式的语法,效率要高很多..
35 楼 xjlnjut730 2009-06-10  
Saito 写道
前些天没办法. 帮一个毕业的做毕业设计. 要用rmi . 最后用phprpc做了一个   前端是 swing . 后端 ibatis .. 通过phprpc..用了一个晚上的时间. 凌晨3点做到第二天下午5点.. 做了90%. .最后再小修小改.. 差不多交工了.

传两张效果图.. 没用look&feel ..   传统的metal ..





不错呀~~呵呵~学习学习~
34 楼 Saito 2009-06-10  
前些天没办法. 帮一个毕业的做毕业设计. 要用rmi . 最后用phprpc做了一个   前端是 swing . 后端 ibatis .. 通过phprpc..用了一个晚上的时间. 凌晨3点做到第二天下午5点.. 做了90%. .最后再小修小改.. 差不多交工了.

传两张效果图.. 没用look&feel ..   传统的metal ..




33 楼 xjlnjut730 2009-06-10  
jinleileiking 写道
xjlnjut730 写道
jinleileiking 写道
我刚用swing做了点程序。。又要换javafx了。。。。技术变的太快了。

会了Swing,学JavaFx快么?JavaFx是不是MVC的?


我swing也是只会用,很傻的,回来把我的臭作放上来。javafx还没看呢


我还不会呢,呵呵~买了本Java Swing准备回去研究研究~~呵呵~
32 楼 jinleileiking 2009-06-10  
xjlnjut730 写道
jinleileiking 写道
我刚用swing做了点程序。。又要换javafx了。。。。技术变的太快了。

会了Swing,学JavaFx快么?JavaFx是不是MVC的?


我swing也是只会用,很傻的,回来把我的臭作放上来。javafx还没看呢
31 楼 xjlnjut730 2009-06-10  
jinleileiking 写道
我刚用swing做了点程序。。又要换javafx了。。。。技术变的太快了。

会了Swing,学JavaFx快么?JavaFx是不是MVC的?
30 楼 jinleileiking 2009-06-10  
我刚用swing做了点程序。。又要换javafx了。。。。技术变的太快了。

相关推荐

    java swing

    总结,Java Swing为Java程序员提供了丰富的GUI开发工具,通过理解和掌握其核心概念、组件、布局、事件处理和外观定制,开发者可以创建出功能强大且用户友好的桌面应用程序。《精通Java Swing》这本书正是为初学者...

    j2se小游戏(打乌鸦,swing)

    这个小游戏旨在帮助Java初学者了解Swing的基本用法以及游戏编程的基本概念。 首先,让我们了解一下Java Swing的基本组件。Swing提供了丰富的组件库,如JButton(按钮)、JLabel(标签)、JFrame(窗口)、JPanel...

    Manning Swing 2nd(英文版)

    ### 相关知识点 #### 一、Manning Swing 第二版概述 ...综上所述,《Manning Swing》第二版是一本涵盖了Swing各个方面内容的经典书籍,无论你是初学者还是经验丰富的开发者,都可以从中获得极大的收获。

    学生练习——Java Swing开发的小计算器

    总结来说,这个Java Swing小计算器项目涵盖了GUI设计、事件处理、数学运算等多个Java编程核心知识点。对于初学者来说,这是一个很好的实践项目,可以帮助他们理解面向对象编程、Swing组件的使用以及事件驱动编程的...

    基于javaSwing的推箱子游戏

    总结,"基于javaSwing的推箱子游戏"是一个利用JavaSwing库创建的桌面应用程序,涉及到Swing组件的使用、事件处理、图形绘制、游戏逻辑实现以及多线程和资源管理等多个方面的知识。对于初学者来说,这是一个很好的...

    Eclipse下写Swing的一个例子

    总结来说,学习在Eclipse中使用Swing开发GUI应用程序需要对Java编程、Eclipse IDE和Swing组件库有一定的了解。通过实例练习和阅读相关教程,初学者可以快速掌握这一技能。对于英文文档,即使非母语者也能通过查阅...

    Java Swing 文件选择器

    Java Swing 是Java GUI(图形用户界面)库的一部分,它提供了丰富的组件来构建桌面应用程序。在Java Swing中,`JFileChooser`是用于实现文件...这个小例子是一个很好的起点,帮助初学者掌握Java Swing中的文件操作。

    swing的windows风格

    在Java Swing框架中,UIManager(用户界面管理器)扮演着关键角色,它不仅负责...对于Swing初学者而言,理解并应用不同风格是掌握Swing框架的关键一步,它不仅能增强应用程序的视觉吸引力,还能加深对Swing架构的理解。

    javaSwing初级入门知识

    IBM的教程是很好的学习资源,通过阅读和实践,初学者可以快速掌握Swing的基本操作,为构建自己的Java桌面应用打下坚实的基础。在学习过程中,建议动手编写简单的应用程序来巩固理论知识,实践是最好的老师。同时,...

    JAVA教学(关于swing的使用)

    ### Java教学:Swing的使用详解 ...无论是初学者还是经验丰富的开发者,都可以利用Swing构建出功能齐全、美观大方的桌面应用。通过对Swing组件的学习和实践,开发者可以更好地掌握GUI编程的技巧,提高开发效率。

    一个基于java Swing开发的ATM机例子

    总结来说,这个基于Java Swing的ATM机例子是一个很好的学习实践项目,它涵盖了GUI设计、事件处理、数据管理、错误处理等多个方面的基础知识,对于初学者来说,是一个很好的起点,能够帮助他们快速理解和掌握Java ...

    MyEclipse 中Swing的可视化开发

    总结来说,MyEclipse的Swing可视化开发功能为Java GUI应用的开发带来了便利。它使开发者能够专注于设计和交互逻辑,而不是繁琐的代码编写。结合提供的资源,开发者可以深入研究Swing组件的使用,进一步提升在...

    Swing可视化插件(Eclipse)

    总结来说,Swing可视化插件是Eclipse平台上的一个强大工具,它将Swing组件和Eclipse的集成开发环境优势结合,使得Java GUI开发变得更加直观和高效。通过拖放操作、事件处理和代码生成等功能,开发者可以专注于应用的...

    java swing 超市管理

    总结来说,这个"Java Swing 超市管理"项目是一个很好的学习资源,涵盖了Java GUI编程、数据库操作和基本的软件架构设计。初学者可以通过这个项目深入理解Java Swing组件的使用,熟悉JDBC与SQL Server的交互,并实践...

    swing个人帐本

    总结来说,【Swing个人账本】是一个基于Java Swing开发的简易财务应用,它通过文件系统存储数据,利用了MVC模式进行架构设计。对于想要学习Java桌面应用开发和文件操作的初学者来说,这是一个非常有价值的实例。通过...

    eclipse-Swing编程环境搭建

    ### Eclipse-Swing编程环境搭建详解 #### 知识点一:Eclipse Helios与插件安装 在构建基于Swing的Java图形用户界面时,选择...无论是对于初学者还是有经验的开发者,这样的环境都将为Swing应用的开发带来极大的便利。

    Java-Swing图书管理系统源码+报告+答辩ppt

    通过研究这个项目,Java初学者可以学习到如何使用Swing构建GUI、如何设计数据库表、如何实现MVC模式、如何进行数据库操作,以及如何编写专业级别的项目文档。同时,也可以了解到一个实际项目的开发流程和规范,提升...

    swingweb 开发

    ### Swingweb 开发知识点概述 #### 1. 关于 Swingweb Swingweb 是一种用于构建基于 Java 的 Web 应用程序的技术框架。它结合了 Java Swing 的界面...无论是初学者还是有经验的开发者,都可以从 Swingweb 中获益匪浅。

Global site tag (gtag.js) - Google Analytics