Swing 入門學習(二)

12:swing的版面结构

   Swing中几乎所有组件都是从JComponent衍生而来,也就是说这些组件都是lightweight Component,均由纯java code所编写面成、Swing中以下几个组件不是由JComponent继承而来:

    JFrameJRoot Pane

    JDialogJRoot Pane

    JWindowJRoot Pane

    JAppletJRoot Pane

  以上四个组件是heavyweight Component,必须使用到native code来画出这四个窗口组件,因为要在操作系统中显示窗口画面,必须使用操作系统的窗口资源,而以往的AWT组件大多使用native code所构造出来,因此Swing中的JFrame便继承原有AWT中的Frame类,面不是继承JComponent类。同样,JApplet是继承原有AWT中的JApplet类,也不是继承JComponent类。

    JFrameJDialogJWindowJApplet这四个组件统称为最上层组件,因为其余的swing组件都必须依附在此四组件之一上才能显示出来。此四组件均实现(Implement)RootPaneContainer这个界面(Interface),此界面定义了各种容器取得与设置并不是真实的容器,它是由Glass PaneLayered Pane所组成(Layered Pane里拥有Content PaneMenu Bar,Menu Bar可选择使用或不使用),我们不能在JRootPane上加入任何的组件,因为它只是一个虚拟的容器,若要在最上层组件上加入组件,必须加在Layered Pane或是Layered Pane里的Content Pane上。以JFrame为例,一般我们要在JFrame上加入其他组件(JButtonJLabel)必须先取得JFrameContent Pane,然后将要加入的组件放在此Content Pane中,而不是直接就加到JFrame上。因此若要在JFrame中加入一个按钮,不能像以前AWT时一样写成frame.add(button)的形式,而必须先取得JFrameContent Pane,然后将按钮加入Content Pane中,如:   frame.getContentPane().add(button)

否则在编译的时候将有错误信息产生。

==========================================================================================================================================================================================

注意:

1. conponet --> container组件必须加在容器中,而容器本身具有层次性的关系,就如同珠宝盒一般,大盒子里面可以放小盒子,小盒子里面还可以放更小的盒子,而珠宝就可以放在某一个盒子中,这里的珠宝就代表组件,盒子就代表容器。因此若您想在JFrame加入任何组件时,必须先取得JFrame的容器来放置这些组件,而由于JFrameJDialogJWindowJApplet是显示Swing组件的源头,我们可以称它们为根组件,也就是所谓的最上层组件。(root component)

2. RootPaneContainer它是一个interface,共有5个类实现(Implement)它,分别是JFrameJAppleetJWindowJDialogJInternalFrame,其中JInternalFrame是一个lightweight Component,它不是一个最上层组件,也就是说JInternalFrame不能单独显示出来,必须依附在最上层组件中,我们将在下面讨论组件,而JFrame,JApplet,JWindow,JDialog均为最上层组件。

==========================================================================================================================================================================================

 

      |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
  
  

  
  
   
    
  
  
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值