Swing读书笔记_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Swing读书笔记

Swing读书笔记

 2011/1/7 8:29:39  chenhailong  http://chenhailong.javaeye.com  我要评论(0)
  • 摘要:1-1:Swing常用的packagePACHAGE|内容-----------------|-------------------------------javax.swing|最常用的pachage,包含了各种swing组件的类javax.swing.border|包含与swing组件外框有关的类javax..swing.colorchooser|针对swing调色盘组件(JColorChooser)所设计的类javax.swing.event|处理由swing组件产生的事件
  • 标签:笔记 读书笔记 Swing

1-1:Swing常用的package
??????????? PACHAGE???????????????????????? |???????????????????? 内????????? 容
????????? -----------------|-------------------------------
?????????? javax.swing????????????????????? |???????? 最常用的pachage,包含了各种swing组件的类
?????????? javax.swing.border?????????????? |???????? 包含与swing组件外框有关的类
?????????? javax..swing.colorchooser??????? |???????? 针对swing调色盘组件(JColorChooser)所设计的类
?????????? javax.swing.event??????????????? |???????? 处理由swing组件产生的事件,有别于AWT事件
?????????? javax.swing.filechooser????????? |???????? 包含针对swing文件选择对话框(JFileChooser)所设计的类
????????? ----------------------------------------------
?????????? javax.swing.plaf???????????????? |???????? 处理swing组件外观的相关类
?????????? javax.swing.plaf.basic?????????? |????????
?????????? javax.swing.plaf.metal?????????? |????????
?????????? javax.swing.plaf.multi?????????? |?
?????????? ----------------------------------------------??????
?????????? javax.swing.table??????????????? |???????? 针对swing表格组件(JTable)所设计的类
?????????? ----------------------------------------------
?????????? javax.swing.text???????????????? |???????? 包含与swing文字组件相关的类
?????????? javax.swing.text.html??????????? |
?????????? javax.swing.text.html.parser???? |
?????????? javax.swing.text.rtf???????????? |
?????????? ----------------------------------------------
?????????? javax.swing.tree???????????????? |???????? 针对swing树关元件(JTree)所设计的类
?????????? javax.swing.undo???????????????? |???????? 提供swing文字组件Redo或Undo的功能
1-2:swing的版面结构
?? Swing中几乎所有组件都是从JComponent衍生而来,也就是说这些组件都是lightweight Component,均由纯java code所编写面成
、Swing中以下几个组件不是由JComponent继承面来:
??? JFrame(JRoot Pane)
??? JDialog(JRoot Pane)
??? JWindow(JRoot Pane)
??? JApplet(JRoot Pane)
? 以上四个组件是heavyweight Component,必须使用到native code来画出这四个窗口组件,因为要在操作系统中显示窗口画面,必
须使用操作系统的窗口资源,而以往的AWT组件大多使用native code所构造出来,因此Swing中的JFrame便继承原有AWT中的Frame
类,面不是继承JComponent类。同样,JApplet是继承原有AWT中的JApplet类,也不是继承JComponent类。
??? JFrame、JDialog、JWindow及JApplet这四个组件统称为最上层组件,因为其余的swing组件都必须依附在此四组件之一上才能
显示出来。此四组件均实现(Implement)RootPaneContainer这个界面(Interface),此界面定义了各种容器取得与设置并不是真实的容器,它是由Glass Pane
与Layered Pane所组成(Layered Pane里拥有Content Pane与Menu Bar,而Menu Bar可选择使用或不使用),
我们不能在JRootPane上加入任何的组件,因为它只是一个虚拟的容器,若要在最上层组件上加入组件,必须加在Layered Pane或是
Layered Pane里的Content Pane上。以JFrame为例,一般我们要在JFrame上加入其他组件(如JButton、JLabel等)必须先取得JFrame
的Content Pane,然后将要加入的组件放在此Content Pane中,而不是直接就加到JFrame上。因此若要在JFrame中加入一个按钮,不
能像以前AWT时一样写成frame.add(button)的形式,而必须先取得JFrame的Content Pane,然后将按钮加入Content Pane中,如:
?? frame.getContentPane().add(button)
否则在编译的时候将有错误信息产生。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
注意:
1.组件必须加在容器中,而容器本身具有层次性的关系,就如同珠宝盒一般,大盒子里面可以放小盒子,小盒子里面还可以放更小的盒子,而珠宝就可以放
在某一个盒子中,这里的珠宝就代表组件,盒子就代表容器。因此若您想在JFrame加入任何组件时,必须
先取得JFrame的容器来放置这些组件,而由于JFrame、JDialog、JWindow与JApplet是显示Swing组件的源头,我们可以称它们为根
组件,也就是所谓的最上层组件。
2.RootPaneContainer它是一个interface,共有5个类实现(Implement)它,分别是JFrame、JAppleet、JWindow、JDialog、
JInternalFrame,其中JInternalFrame是一个lightweight Component,它不是一个最上层组件,也就是说JInternalFrame不能单独显示出来,必须依附在最上
层组件中,我们将在下面讨论组件,而JFrame,JApplet,JWindow,JDialog均为最上层组件。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
RootPaneContainer定义了下面几种方法:
??? 方法
? Container?????? getContentPane()返回contentPane
? Component?????? getGlassPane()返回glassPane
? JLayeredPane??? getLayeredPane()返回layeredPane
? JRootPane?????? getRootPane返回属于这个组件的JRootPane
? Void??????????? setContentPane(Container contentpane)设置ContentPane
? Void??????????? setGlassPane(Component glassPane)设置GlassPane
? Void??????????? setLayeredPane(JLayeredPane layeredPane)设置LayeredPane
JFrame如何取得Content Pane的实际流程,下面是一段很简单的程序代码:
? public class Simple{
??? Simple(){
?????? JFrame frame=new JFrame();
?????? Container contentPane=frame.getContentPane();
?????? JButton button=new JButton();
?????? contentPane.add(button);
??? }
? }
当我们写frame.getContentPane()时,会返回此frame的Content Pane,也就是一个容器组件,有了容器之后我们才能将button组件
摆进去,此时JFrame才算拥有button组件。所以JFrame就好像是一块空地,要在这空地上信人应该先盖一栋房子(容器),然后人
、家具、设备等等(组件)就能搬进此房子中。下面的层次结构说明了最上层组件都含有JRootPane组件,JRootPane本身就含有容
器组件,可让最上层组件装入其他的组件。

????? |Frame------JFrame(JRoot Pane)
????? |
Window|Dialog-----JDialog(JRoot Pane)
????? |
????? |
????? |-----------JWindow(JRoot Pane)

Applet -----------JApplet(JRoot Pane)

图示:
???????? |Grass Pane
???????? |
Root Pane|
???????? |??????????? |Content Pane
???????? |Layered Pane|
????????????????????? |Menu Bar

上一篇: javaSwing的监听探索 下一篇: 没有下一篇了!
发表评论
用户名: 匿名