Swing组件介绍

Swing 包是 JFC Java Foundation Classes )的一部分,由许多包组成,如下表:
   Com.sum.swing.plaf.motif 用户界面代表类,它们实现 Motif 界面样式  
    Com.sum.java.swing.plaf.windows
用户界面代表类,它们实现 Windows 界面样式
   Javax.swing    Swing 组件和使用工具
   Javax.swing.border      Swing 轻量组件的边框
   Javax.swing.colorchooser    JcolorChooser 的支持类 / 接口
   Javax.swing.event   事件和侦听器类
   Javax.swing.filechooser    JFileChooser 的支持类 / 接口
   Javax.swing.pending   未完全实现的 Swing 组件
   Javax.swing.plaf   抽象类,定义 UI 代表的行为
   Javax.swing.plaf.basic   实现所有标准界面样式公共功能的基类
   Javax.swing.plaf.metal 用户界面代表类,它们实现 Metal 界面样式
   Javax.swing.table    Jtable 组件
   Javax.swing.text   支持文档的显示和编辑
   Javax.swing.text.html   支持显示和编辑 HTML 文档
   Javax.swing.text.html.parser    Html 文档的分析器
   Javax.swing.text.rtf   支持显示和编辑 RTF 文件
   Javax.swing.tree    Jtree 组件 的支持类
   Javax.swing.undo   支持取消操作

   ( jdk1.3 中,第一、第二和 pending 包没有了,增加了 plaf.multi 包,主要功能:给缺省的 L&F 加上附加的 L&F ,例如一个 MultiButtonUI 实例可以同时处理 MotifButtonUI AudioButtonUI.)

   swing 包是 Swing 提供的最大包,它包含将近 100 个类和 25 个接口,几乎所有的 Swing 组件都在 swing 包中,只有 JtableHeader JtextComponent 是例外,它们分别在 swing.table swing.text 中。
   swing.border 包中定义了事件和事件监听器类,与 AWT event 包类似。它们都包括事件类和监听器接口。
   swing.pending 包包含了没有完全实现的 Swing 组件。
   swing.table 包中主要包括了表格组建( JTable )的支持类。
   swing.tree 同样是 JTree 的支持类。
   swing.text swing.text.html swing.text.html.parser swing.text.rtf 都是用于显示和编辑文档的包。

Jcomponent
是一个抽象类,用于定义所有子类组件的一般方法 , 但并不是所有的 Swing 组件都继承于 JComponent 类, JComponent 类继承于 Container 类,所以凡是此类的组件都可作为容器使用。
组件从功能上分可分为:
   1) 顶层容器: JFrame,JApplet,JDialog,JWindow 4
   2) 中间容器: JPanel,JScrollPane,JSplitPane,JToolBar  
   3) 特殊容器:在 GUI 上起特殊作用的中间层,如 JInternalFrame,JLayeredPane,JRootPane.
   4) 基本控件:实现人际交互的组件,如 Jbutton, JComboBox, JList, JMenu, JSlider, JtextField
   5) 不可编辑信息的显示:向用户显示不可编辑信息的组件,例如 JLabel, JProgressBar, ToolTip
   6) 可编辑信息的显示:向用户显示能被编辑的格式化信息的组件,如 JColorChooser, JFileChoose, JFileChooser, Jtable, JtextArea

使用 Swing 的基本规则
  与 AWT 组件不同, Swing 组件不能直接添加到顶层容器中,它必须添加到一个与 Swing 顶层容器相关联的内容面板( content pane )上。内容面板是顶层容器包含的一个普通容器,它是一个轻量级组件。基本规则如下:
  ( 1 )把 Swing 组件放入一个顶层 Swing 容器的内容面板上
  ( 2 )避免使用非 Swing 的重量级组件。

JFrame 添加组件有两种方式:
   1) getContentPane( ) 方法获得 JFrame 的内容面板,再对其加入组件: frame.getContentPane().add(childComponent)
   2) 建立一个 Jpanel JDesktopPane 之类的中间容器,把组件添加到容器中,用 setContentPane() 方法把该容器置为 JFrame 的内容面板:
     Jpanel contentPane=new Jpanel( );
     ……// 把其它组件添加到 Jpanel ;
     frame.setContentPane(contentPane);
     // contentPane 对象设置成为 frame 的内容面板

根面板
根面板由一个玻璃面板( glassPane) 、一个内容面板( contentPane) 和一个可选择的菜单条( JMenuBar) 组成,而内容面板和可选择的菜单条放在同一分层。玻璃面板是完全透明的,缺省值为不可见,为接收鼠标事件和在所有组件上绘图提供方便。
  根面板提供的方法:
   Container getContentPane(); // 获得内容面板
   setContentPane(Container); // 设置内容面
   JMenuBar getMenuBar( ); // 活动菜单条
   setMenuBar(JMenuBar); // 设置菜单条
   JLayeredPane getLayeredPane(); // 获得分层面板
   setLayeredPane(JLayeredPane); // 设置分层面板
   Component getGlassPane(); // 获得玻璃面板
   setGlassPane(Component); // 设置玻璃面板
分层面板( JLayeredPane
Swing
提供两种分层面板: JlayeredPane JDesktopPane JDesktopPane JLayeredPane 的子类,专门为容纳内部框架( JInternalFrame )而设置。向一个分层面板种添加组件,需要说明将其加入哪一层,指明组件在该层中的位置: add(Component c, Integer Layer, int position)
面板( JPanel
  面板( JPanel )是一个轻量容器组件,用法与 Panel 相同,用于容纳界面元素,以便在布局管理器的设置下可容纳更多的组件,实现容器的嵌套。 Jpanel, JscrollPane, JsplitPane, JinteralFrame 都属于常用的中间容器,是轻量组件。 Jpanel 的缺省布局管理器是 FlowLayout
滚动窗口( JScrollPane
JscrollPane
是带滚动条的面板,主要是通过移动 JViewport( 视口 ) 来实现的。 JViewport 是一种特殊的对象,用于查看基层组件,滚动条实际就是沿着组件移动视口,同时描绘出它在下面 " 看到 " 的内容。
分隔板( JSplitPane
JSplitPane
提供可拆分窗口,支持水平拆分和垂直拆分并带有滑动条。常用方法有 :
   addImpl(Component comp,Object constraints,int index)// 增加指定的组件
   setTopComponent(Component comp) // 设置顶部的组件
   setDividerSize(int newSize) // 设置拆分的大小
   setUI(SplitPaneUI ui) // 设置外观和感觉
选项板( JTabbedPane
JTabbedPane
提供一组可供用户选择的带有标签或图标的开关键。常用方法 :
   add(String title,Component component) // 增加一个带特定标签的组件
   addChangeListener(ChangeListener l) // 选项板注册一个变化监听器
工具栏( JToolBar
JtoolBar
是用于显示常用工具控件的容器。用户可以拖拽出一个独立的可显示工具控件的窗口。
  常用方法有:
        JToolBar(String name) // 构造方法
        getComponentIndex(Component c) // 返回一个组件的序号
        getComponentAtIndex(int i) // 得到一个指定序号的组件
内部框架( JInternalFrame
内部框架 JInternalFrame 就如同一个窗口在另一个窗口内部,其特点如下:
   1) 必须把内部框架添加到一个容器中(通常为 JDesktopPane), 否则不显示;
   2) 不必调用 show() setVisible() 方法,内部框架随所在的容器一起显示;
   3) 必须用 setSize() pack() setBounds 方法设置框架尺寸,否则尺寸为零,框架不能显示;
   4) 可以用 setLocation() setBounds( ) 方法设置内部框架在容器中的位置,缺省值为 0 0 ,即容器的左上角;
   5) 象顶层 JFrame 一样,对内部框架添加组件也要加在它的内容面板上;
   6) 在内部框架中建立对话框,不能使用 JDialog 作为顶层窗口,必须用 JOptionPane JInternalFrame;
   7) 内部框架不能监听窗口事件,可以通过监听与窗口事件类似的内部框架( JInternalFrameEvent )处理内部框架窗口的操作。
   JFrame frame=new JFrame("InternalFrameDemo"); // 实例化窗口
   JDesktopPane desktop=new JDesktopPane(); // 实例化容器 JDesktopPane
   MyInternalFrame myframe=new MyInternalFrame(); // 实例化内部窗口
   desktop.add(myframe); // 把内部窗口添加到容器中
   myframe.setSelected(true); // 内部面板是可选择的
   frame.setContentPane(desktop); // desktop 设为 frame 的内容面板

你可能感兴趣的:(职场,swing组件,休闲)