组件介绍随笔

组件介绍 随笔

Swing组件分类

组件从功能上分可分为:

  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

Frame与JFrame

AWT组件介绍:
在AMT组件中分为两大类,这两类的基类分别是Component和MenuComponent,其中,MenuComponent是所有与菜单相关组件的父类,Component则是除菜单外其他AMT组件的父类,它表示一个能以图形化方式显示出来,并可与用户交互的对象。

Component类通常被称为组件,根据Component的不同作用,可将其分为基本组件类和容器类。基本组件类是按钮,文本框之类的,容器类则是通过Component的子类Container实例化的对象。Container又分为Window和Pannel,Window又分为Frame和Dialog,Frame是窗体,Dialog是对话框。Panel是中间容器。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G4Js6PET-1631369869170)(C:\Users\duanyf\AppData\Roaming\Typora\typora-user-images\image-20210911203304554.png)]

JFrame与Frame区别:

JFrame是Frame的子类,JFrame在javax.swing包内,Frame在包java.awt中

JFrame 与 JPanel

1.关系与定位

JFrame的定位
1.java的GUI程序的基本思路是以JFrame为基础,它是屏幕上window的对象,能够最大化、最小化、关闭。
2.Swing 的三个基本构造块:标签、按钮和文本字段;但是需要个地方安放它们,并希望用户知道如何处理它们。JFrame 类就是解决这个问题的——它是一个容器,允许程序员把其他组件添加到它里面,把它们组织起来,并把它们呈现给用户。 JFrame 实际上不仅仅让程序员把组件放入其中并呈现给用户。比起它表面上的简单性,它实际上是 Swing 包中最复杂的组件。为了最大程度地简化组件,在独立于操作系统的 Swing 组件与实际运行这些组件的操作系统之间,==JFrame 起着桥梁的作用。==JFrame 在本机操作系统中是以窗口的形式注册的,这么做之后,就可以得到许多熟悉的操作系统窗口的特性:最小化/最大化、改变大小、移动。

JPanel

JPanel 类是Java 中一种常用到的中间容器,也是使用最多的Swing 组件之一。JPanel 中不仅可以添加组件和其他面板,还可以将JPanel 作为组件加入到JFrame 中去。JPanel 类从JComponent 类继承。

JFrame与JPanel的关系
JFrame是一个顶层的框架类,好比一个窗户的框子。也是一个容器类。这个框子可以嵌入几个玻璃窗
JPanel是一个容器类,相当于一大玻璃窗
JLabel等是一些基础组件,它必须置于某个容器里,类似于窗花、剪纸,必须置于窗户的表面。

JFrame自带了一个玻璃窗。可以通过语句 获得该内容窗格。

Containerc=getContentPane(); 

也可以定制一个新的玻璃面板替换原来的自带的玻璃窗,代码如下:

JPanel jp=new JPanel();
this.setContentPane(jp);

2.JFrame背景色设置

窗口背景颜色是指直接调用JFrame或者Frame的setBackground(Color color)方法设置后显示出来的颜色。其实,在你直接调用这个方法后,你的确设置了背景颜色,而==你看到的却不是直接的JFrame或者Frame,而是JFrame.getContentPane().==而JFrame上的contentPane默认是Color.WHITE的,所以,无论你对JFrame或者Frame怎么设置背景颜色,你看到的都只是contentPane.

contentPane是白色且contentPane是内容层覆盖了Frame 对Frame使用setBackground(Color color)但是看不到Frame看到的是contentPane 所以无效

JFrame层次结构

img

Frame 的最底层是 RootPane,
然后是 LayeredPane
再上面就是 ContentPane
最顶层是 GlassPane ( 默认是透明的,

现在我们再来看另一张图,从模型的角度来看 JFrame 的层次:

img

可以看出,其实 ContentPane 是添加在 LayeredPane 上的一个控件。
而 LayeredPane 和 GlassPane 是直接添加在 RootPane 上的,
RootPane 直接添加在 JFrame 上。

其实你只要记住:
1、你现在不再需要去 getContentPane(),
2、ContentPane 默认是一个 JPanel ,

JComponent)

API中文解释:

该类是==除顶层容器外所有 Swing 组件的父类。==要使用继承自 JComponent 的组件,必须将该组件置于一个根为顶层 Swing 容器的包含层次结构(containment hierarchy)中。顶层 Swing 容器(如 JFrameJDialogJApplet)是专门为其他 Swing 组件提供绘制自身场所的组件。

添加Swing组件方法:

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

对JFrame添加组件有两种方式
  1) 用getContentPane( )方法获得JFrame的内容面板,再对其加入组件:

JFrame frame=new JFrame();
frame.getContentPane().add(childComponent);

现在是frame.add(jbutton)是因为省略了getContentPane,swing组件默认都是添加到内容层
2. 建立一个Jpanel或 JDesktopPane之类的中间容器,把组件添加到容器中,用setContentPane()方法把该容器置为JFrame的内容面板:

   ```java
        JFrame frame=new JFrame();
   	   Jpanel contentPane=new Jpanel( ); 
          ……//把其它组件添加到Jpanel中; 
          frame.setContentPane(contentPane); J 
          //把contentPane对象设置成为frame的内容面板 
   
   
   ```

轻量级组件和重量级组件

轻量级组件是用JAVA代码画出来的,这样具有平台移植性。

重量级组件是调用操作系统的函数画出来的组件,比如主窗体。

一般来说尽量用轻量级的组件,这样对程序的移植性很好,一般javax.swing包里的组件大部分是轻量级的,java.awt里面的是重量级的。   Swing是由100%纯Java实现的,Swing组件是用Java实现的轻量级( light-weight)组件,没有本地代码,不依赖操作系统的支持, 这是它与AWT组件的最大区别。由于AWT组件通过与具体平台相关的对等类(Peer)实现,因此Swing比AWT组件具有更强的实用性。 Swing在不同的平台上表现一致,并且有能力提供本地窗口系统不支持的其它特性。

*文章地址 http://www.360doc.com/content/12/0209/15/4228225_185300761.shtml*

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值