1.  从结构上划分

Swing 组件类分为两种,一种是JComponent类,一种是Windows类.其中windows类包含的是一些可以独立显示的组件,而JComponent类包含的是不可以独立显示的组件.

什么是可独立显示的组件和不可独立显示的组件?

可独立显示的组件:当运行一个程序时,可独立显示的组件无需在其他组件上即可显示,即它可以直接显示出来,例如JFrame类.

不可独立显示的组件:运行时,必须依靠可独立显示的组件才能将其显示出来,如JLabel类,JButton类,得托付在类似于JFrame类上才能显示出来.

2.从功能上划分

从功能上划分分为:顶层组件,中间组件和基本组件.

顶层容器:JFrame,JDialog,JApplet,JWindow.所谓的顶层容器,也就是之前讲的Window组件,是可以独立显示的.

中间容器:JPanel,JScrollPane,JSplitPane,JToolBar.所谓的中间容器也就是指那些可以充当载体但是不能独立显示的组件,就是一些基本组件可以依托在其中,但是也不能独立显示,必须依托在顶层容器中才行.

特殊容器:在GUI上其特殊作用的中间层,如JInternalFrame,JLayeredPane,JRootPane.这里的特殊容器其实也是中间容器类的一种,只不过在图形上更加能够起到专业和美化的作用.

基本组件:能起到人机交互的组件,如JButton,JLabel,JComboBox,JList,JMenu,JSlider,JTextField.

注:要添加基本组件,一定要添加中间容器来承载.

以下示例能很好的描述这个问题:

public class Test {
public static void main(String[] args) {
JButton jButton = new JButton("test");
}
}

这段代码运行后没有任何显示.

再看这段代码

public class Test {
public static void main(String[] args) {
JFrame jFrame = new JFrame("test");
JButton jButton = new JButton("test");
jButton.setSize(10,20);
jFrame.add(jButton);
jFrame.setSize(400,300);
jFrame.setVisible(true);
jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
}
运行结果如图所示:
尽管设置了jButton的大小为10,20.但是依然充满了整个Frame.
为了实现jButton的大小为10,20,必须添加一个中间容器来承载才行.
再看如下代码:
public class Test {
public static void main(String[] args) {
JFrame jFrame = new JFrame("test");
JButton jButton = new JButton("test");
JPanel pane = new JPanel();
jFrame.setContentPane(pane);
jButton.setSize(10,20);
jFrame.setSize(400, 300);
pane.add(jButton);
jFrame.setVisible(true);
jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
}

运行结果:

这样就达到了我们的设计目的.

Swing学习笔记1-----Swing组件类的层次的更多相关文章

  1. 【React】react学习笔记02-面向组件编程

    react学习笔记02-面向组件编程 面向组件编程,直白来说,就是定义组件,使用组件. 以下内容则简单介绍下组建的声明与使用,直接复制demo观测结果即可. 步骤: 1.定义组件   a.轻量组件-函 ...

  2. java学习笔记07--日期操作类

    java学习笔记07--日期操作类   一.Date类 在java.util包中定义了Date类,Date类本身使用非常简单,直接输出其实例化对象即可. public class T { public ...

  3. Java程序猿的JavaScript学习笔记(10—— jQuery-在“类”层面扩展)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  4. AJPFX学习笔记JavaAPI之String类

    学习笔记JavaAPI之String类 [size=10.5000pt]一.所属包java.lang.String,没有子类.特点:一旦被初始化就不可以被改变. 创建类对象的两种方式: String ...

  5. 并发编程学习笔记(10)----并发工具类CyclicBarrier、Semaphore和Exchanger类的使用和原理

    在jdk中,为并发编程提供了CyclicBarrier(栅栏),CountDownLatch(闭锁),Semaphore(信号量),Exchanger(数据交换)等工具类,我们在前面的学习中已经学习并 ...

  6. JVM学习笔记-第六章-类文件结构

    JVM学习笔记-第六章-类文件结构 6.3 Class类文件的结构 本章中,笔者只是通俗地将任意一个有效的类或接口锁应当满足的格式称为"Class文件格式",实际上它完全不需要以磁 ...

  7. Netty学习笔记(二)——netty组件及其用法

    1.Netty是 一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端. 原生NIO存在的问题 1) NIO的类库和API繁杂,使用麻烦:需要熟练掌握Selector.Se ...

  8. java学习笔记之日期日历类

    java学习笔记之日期日历 Date日期类概述: 表示特定的瞬间,精确到毫秒 Date类的构造方法: 1.空参数构造方法 Date date = new Date(); 获取到当前操作系统中的时间和日 ...

  9. angular2.0学习笔记5.关于组件

    1.组件文件应在/src/app文件夹下 2.组件文件命名应遵循小写中线形式,每个单词之间用中线分隔,并且以.component.ts结尾. 如:HeroDetailComponent类应该放在her ...

随机推荐

  1. Python类中super()和__init__()的关系

    Python类中super()和__init__()的关系 1.单继承时super()和__init__()实现的功能是类似的 class Base(object): def __init__(sel ...

  2. 排序map

    1.根据map的值,升序排序 Map<String, Integer> map = new TreeMap<String, Integer>(); map.put(" ...

  3. javaSE基础06

    javaSE基础06 一.匿名对象 没有名字的对象,叫做匿名对象. 1.2匿名对象的使用注意点: 1.我们一般不会用匿名对象给属性赋值的,无法获取属性值(现阶段只能设置和拿到一个属性值.只能调用一次方 ...

  4. Cocos2dx

    初玩Cocos2dx,多多包涵. 感觉版本之间的差异比较大,相对前面的版本来说,3.X更容易上手,更方便了. 一.安装python.我的python-2.7.3.配置环境变量 系统变量里:在Path里 ...

  5. extarea输入的换行在网页上正常显示

    如图

  6. TFS API:二、TFS 代码查询工作项

    TFS API:二.TFS  代码查询工作项 首先我们需要认识TFS的两大获取服务对象的类. 他们分别为TfsConfigurationServer和TfsTeamProjectCollection, ...

  7. BigDecimal 处理集合

    1  创建一个BigDecimal 对象 BigDecimal Sum = new BigDecimal(0); 2  一个BigDecimal 对象,保留2位小数点 Sum.setScale(2,B ...

  8. hosts文件权限导致监听无法启动

    1.所属系统:2.问题描述:3.解决4.参考???疑点:为什么修改主机名会使hosts文件权限发生改变 1.所属系统: ZHJS2#[/]uname -a HP-UX ZHJS2 B.11.31 U ...

  9. myeclipse一直卡在loading workbench解决方法

    删除工作空间下.metadata中的org.eclipse.ui.workbench org.eclipse.ui.workbench.texteditor

  10. webform简单、复合控件

    简单控件: 1.Label 会被编译成span标签 属性: Text:文本内容 CssClass:CSS样式 Enlabled:是否可用 Visible:是否可见 2.Literal 空的,C#会把里 ...