最近把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框架的理解应该有很大的帮助~~

java swing 总结_对Java 中Swing的小总结相关推荐

  1. java applet配置_配置Java Applet的运行环境

    Java小程序,也就是Java Applet,可以在Web浏览器中运行.Java Applet必须以脚本的形式嵌入到HTML页面中,才能在web浏览器中运行. 之前总以为本地安装了JDK,指定好JAV ...

  2. java swing计算机_使用java swing仿window7标准计算器界面

    完整代码 ----- package com.lfd.view; import java.awt.BorderLayout; import java.awt.Color; import java.aw ...

  3. java 公共组件_【JAVA语言程序设计基础篇】--Swing GUI组件的公共特性

    package chapter12; import java.awt.Color; import java.awt.FlowLayout; import java.awt.Font; import j ...

  4. ubuntu java classpath 设置_在Ubuntu中正确设置java classpath和java_home

    我有错误 Exception in thread"main" java.lang.NoClassDefFoundError: 当我尝试在Ubuntu上运行编译类时.我使用的是一个非 ...

  5. java coin介绍_代码示例中的Java 7:Project Coin

    java coin介绍 该博客通过代码示例介绍了一些新的Java 7功能,这些项目在Project Coin一词下进行了概述. Project Coin的目标是向JDK 7添加一组小的语言更改.这些更 ...

  6. java画笑脸_用java编写一个颜色为红色,粗线型的笑脸和哭脸,需要继承JFrame类,用java中的绘制图形做...

    展开全部 /* * Copyright (c) cherry  Co. Ltd. * All right reserved. */ package com.cherry.swing; import j ...

  7. java final 类_在Java中,final修饰的类有什么特点

    展开全部 关于Java中的32313133353236313431303231363533e4b893e5b19e31333264663736final(2010-09-09 14:19:48)转载▼ ...

  8. java logging包_用JDK中提供的java.util.logging.*包创建Logger对象----原创

    由于项目中用到了Applet与Servlet之间(客户端用Applet.Server端用Servlet)的通信,要求: 1:>客户端与服务端必须出Log. 2:>浏览器在加载Applet时 ...

  9. java jar 目录_将Java类路径中的所有jar包括在一个目录中

    有没有一种方法可以将所有的jar文件包含在类路径的目录中? 我正在尝试java -classpath lib / *.jar :. my.package.Program,它无法找到当然在这些罐子里的类 ...

  10. java gradle构建_在Gradle中为JPMS构建Java 6-8库

    java gradle构建 通过提供Java 9 module-info.class了解如何使用Gradle构建支持JPMS( Java平台模块系统 )的Java 6-8库. 介绍 如果您需要JPMS ...

最新文章

  1. stl中的unique
  2. arraylist从大到小排序_java基础算法之二叉树排序(递归)
  3. 区间覆盖全部类型及部分精选习题汇总详解(贪心策略)
  4. mybatis里mapper.xml中SQL语句if语句嵌套if语句
  5. 假期的游戏陪玩市场,有人挣钱有人被骗
  6. spring mvc实现ajax 分页
  7. unity2018设置雾在哪_【zSpace实操】Unity2018发布设置
  8. Himall商城Html文本帮助类HtmlContentHelper(2)
  9. 报表如何集成 echarts 官网示例图
  10. 适合学计算机学生喝的茶,学生喝什么茶能够提高记忆力
  11. 鸿蒙系统剽窃,外媒再爆猛料!质疑华为鸿蒙系统抄袭:被指山寨谷歌安卓11系统...
  12. python数据分析之pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
  13. 递归算法:爬楼梯问题
  14. OSGi 框架的组件运行机制
  15. 计算机专业不会编程怎么找工作?
  16. 全球经济放水之下,数字货币牛市夭折?
  17. MSM8909 CW2015 电量计驱动调试
  18. 梅敬成 三维CAD软件发展历程:过去,现在和未来 (ACIS,Parasolid,OCC, 中望OV,华天CRUX IV )
  19. 使用Deal.II过程
  20. android蓝牙防丢失,Android 蓝牙防丢实现(一)

热门文章

  1. 分布式数据库TiDB介绍
  2. 广州启明星辰的面试经历
  3. TeamViewer14 ubuntu 破解商业环境
  4. 十个你可能不知道的CloudFlare免费CDN加速技巧
  5. 是怎么样的SQL优化能做到 900W+数据,从17s到300ms?
  6. 推荐系统[四]:精排-详解排序算法LTR (Learning to Rank): poitwise, pairwise, listwise相关评价指标,超详细知识指南。
  7. Moore FSM和Mealy FSM的区别
  8. Android城市列表
  9. 【Android】世界各国语言代码
  10. IMP-00017: following statement failed with ORACLE error 20005:(表统计信息被锁)