`
空空儿
  • 浏览: 134979 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

Swing 基本介绍

    博客分类:
  • J2SE
阅读更多
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

0
1
分享到:
评论

相关推荐

    基于matlab实现的相移光纤光栅(FBG.rar

    基于matlab实现的相移光纤光栅(FBG.rar

    nfcPro-2020071702 id、ic读卡器软件

    配套设备仪器用

    数据更新至2020年分地区电源项目 建设本年施工规模.xls

    数据来源:中国电力统计NJ-2021版

    基于matlab实现烟花寻优算法,自己编的.rar

    基于matlab实现烟花寻优算法,自己编的.rar

    数据更新至2020年分电压等级35千伏及以上 企业自备变压器情况.xls

    数据来源:中国电力统计NJ-2021版

    基于Java的俄罗斯方块游戏的设计与实现

    俄罗斯方块游戏最初是由俄罗斯人阿列克谢·帕基特诺夫在1984年开发的休闲小游戏,曾几何时它创造了无可匹敌的商业价值,影响了一代休闲小游戏的开发与产业链。随着信息时代科技时代的不断发展和变化,计算机已经普及到每一个人的生活中,在繁忙的工作生活中,这一类休闲小游戏给人们带来了些许的放松。 这篇论文详细的描述分析了经典传统的俄罗斯方块实现的基本思路和一些基本游戏规则,在此基础之上,更进一步地开发出俄罗斯方块的创新创意模式,在经典游戏基础上开发出随着分数增高而等级增高难度加大的模式,并且创意性的开发出可操控方块颜色变换的模块,并且增添了游戏声音和音乐模块。本论文对上述功能给出了具体实现流程、详细描述、和一些源代码。 本论文阐述了俄罗斯方块游戏的开发和发展历史、开发此游戏的意义以及开发环境并根据软件工程开发软件和java编写程序的相关知识,对程序的需求分析、概要设计、详细设计与实现、调试运行进行了一系列描述。 此次程序设计是在Microsoft Windows 7系统下,以Java为开发语言,在Eclipse开发平台上进行游戏的设计与实现。

    一个基于ArkTS开源的鸿蒙next版的物流APP源代码

    一个基于ArkTS开源的鸿蒙next版的物流APP源代码

    (更新至2022年)就业基本情况.xls

    数据来源:中国人口与就业统计NJ-2023版

    node-v12.2.0-linux-armv7l.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    limbox86pcemulator_241983-3.apk

    limbox86pcemulator_241983-3.apk

    各地区分行业国有单位其他就业人员和平均工资(2022年).xls

    数据来源:中国劳动统计NJ-2023版

    node-v10.18.0-linux-armv7l.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    (更新至2022年)平均预期寿命.xls

    数据来源:中国人口与就业统计NJ-2023版

    2023年华数杯不透明制品最优配色方案设计B题全文

    2023年华数杯全国大学生数学建模大赛的大数据B题论文全文,文中框架完整,内容较为详细,此论文获得华数杯三等奖,为了避免二次外传,本文设置了水印,请各位注意文章隐私,同时由于限制,在此并未上传相关代码,若需要代码或答疑等服务,请私聊作者。 日常生活中五彩;缤纷的不透明有色制品是由着色剂染色而成。因此,不透明制品的配色对其外观美观度和市场竞争力起着重要作用。然而,传统的人工配色存在一定的局限性,如主观性强、效率低下等。因此,研究如何通过计算机方法来实现不透明制品的配色具有重要意义。 以下是部分题目 光通过物体传播有吸收、反射和透射三种方式。对于不透明制品来说,大部分光线会被其表面吸收或反射。吸收和反射的光线在经过透明度等校正后按波长分解成不同的颜色成分,形成光谱图。该光谱图通常由 400--700nm 波段的各色光组成。为简化计算,最终配色后的颜色的反射率以 20nm 为间隔的光谱数据来表示。对于不透明材料而言,吸收系数 K/散射系数 S 的比值与反射率 R 之间存在一定关系,具体请参考文献【1】《计算机配色理论及算法的研究》中的 K-M光学模型。基于光学模型得到的颜色参数,可应用于色

    华为 OD 机考攻略-加强版

    附件是 华为 OD 机考攻略_加强版,文件绿色安全,请大家放心下载,仅供交流学习使用,无任何商业目的!

    分行业城镇非私营单位就业人员工资总额(2003-2011年).xls

    数据来源:中国劳动统计NJ-2023版

    数据更新至2020年分地区单机6000千瓦及以上 水力发电机组分类情况(不足5万千瓦).xls

    数据来源:中国电力统计NJ-2021版

    基于C++qt 停车场管理系统源码+sql文件.zip

    Qt实现停车场管理软件 入库、出库、导航 Qt mysql操作 Qt 解析tiled生成的xml文件,并绘制图片 Qt 绘图 Qsql, QSqlDatabase, QtXml, QVector ,QImage, QPrinter .... 环境 ubuntu + mysql Todo install qt 5.3 install mysql 5 import sql file run

    分行业城镇非私营单位就业人员平均名义工资指数(2013-2022年).xls

    数据来源:中国劳动统计NJ-2023版

    数据更新至2020年电力企业线损电量.xls

    数据来源:中国电力统计NJ-2021版

Global site tag (gtag.js) - Google Analytics