rss· 投稿· 设为首页· 加入收藏· 繁體版
当前位置: 火魔网 » 程序开发 » Java基础

swing (一) 版面结构

1、  swing常用的package
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.test;                             包含与swing文字组件相关的类
javax.swing.text.html;
javax.swing.test.html.parser;
javax.swing.test.rtf;
---------------------------------------------------------------------------------------------------------------------------
javax.swing.tree;                             针对swing树关元件(JTree)所设计的类
javax.swing.undo;                          提供swing文字组件Redo或Undo的功能2、  swing的版面结构
swing中几乎所有组件都是从Jcomponent衍生而来,也就是说这些组件都是lightweight Component,均由纯java code编写而成;而swing中以下几个组件不是由Jcomponent继承而来:JFrame; JDialog; JWindow; JApplet;以上四个组件是heavyweight Component,必须使用到native code来画出这四个窗口组件,因为要在操作系统中显示窗口画面,必须使用操作系统的窗口资源,而以往的AWT组件大多使用native code所构造出来,因此swing中的JFrame便继承原由的AWT中的Frame类,而不是继承JComponent类。同样,JApplet是继承原由AWT中的JAppet类,也不是继承JComponent类。JFrame、JDialog、JWindow及JApplet这四个组件统称为最上层组件,因为其余的swing组件都必须依附在此四组件之一上才能显示出来。此四组件均实现(Implements)RootPaneContainer这个接口,此界面定义了各种容器和设置,但并不是真实的容器,它由Glass Pane与Layerde Pane所组成(Layered Pane里拥有COntent Pane与Menu Bar,而Menu Bar可选择使用或不使用)。我们不能在在JRootPane上加入任何的组件,因为它只是一个虚拟的容器,若在最上层组件上加入组件,必须加在Layered Pane或是Layered Pane里的Content Pane上。以JFrame为例,一般我们要在JFrame上加入其他组件必须先取得JFrame的Content Pane,然后将要加入的组件放在此Content Pane中,而不是直接就加到JFrame上。因此若要在JFrame中加入一个按钮,必须先取得JFrame的Content Pane,然后将按钮加入Content Pane中:frame.getContentPane().add(button);注:
(1)    组件必须加在容器中,而容器本身具有层次性的关系,若想在JFrame加入任何组件时,必须先取得JFrame的容器来放置这些组件,而JFrame、JDialog、JWindow、JApplet是显示swing组件的源头,因此称之为根组件,即最上层组件。
(2)    RootPaneContainer是一个interface,共有5个类实现他,分别是JFrame、JApplet、JWindow、JDialog、JInternalFrame,其中JInternalFrame是一个ligntweight Component,他不是最上层组件,因此不能单独显示,必须依附在最上层组件中。RootPaneContainer定义了下面几种方法:
Container getContentPane();           返回contentPane
Component get GlassPane();           返回glassPane
JLayeredPane getLayeredPane();        返回layeredPane
JRootPane getRootPane();             返回属于这个组件的JRootPane
void setContentPane(Container contentPane);             设置ContentPane
void setGlassPane(Component glassPane);                  设置GlassPane
void setLayeredPane(JLayeredPane layeredPane);      设置LayeredPane添加按钮代码:
JFrame frame=new JFrame();
Container contentPane=frame.getContentPane();
JButton button=new JButton();
contentPane.add(button);
顶一下
(1)
踩一下
(0)