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. 关于 printf() 函数的三张表格

    函数原型: printf(Control-String, item1, item2, ...); 表一  转换说明符及作为结果的打印输出 转 换 说 明 输    出 %a 浮点数.十六进制数字和p- ...

  2. JDBC、DAO

    JDBC是Java数据库连接技术的简称,提供连接各种常用数据库的能力 JDBC的工作原理 JDBC 驱动器由数据库厂商提供 1.在个人开发与测试中,可以使用JDBC-ODBC桥连方式 2.在生产型开发 ...

  3. android 任意类 获得屏幕大小

    方法一 WindowManager managet=(WindowManager) context.getSystemService(Context.WINDOW_SERVICE); Display ...

  4. 用typedef定义函数指针的问题

    在学习windows API的时候,遇到下面这段代码   以前见过的typedef的用法都是给一个数据类型取一个别名 typedef oldTypeName newTypeName   这种给数据类型 ...

  5. useradd与adduser的区别

    useradd与adduser都是创建新的用户 在CentOs下useradd与adduser是没有区别的都是在创建用户,在home下自动创建目录,没有设置密码,需要使用passwd命令修改密码. 而 ...

  6. SEL-消息机制

    int main() { Person *p = [[Person alloc] init]; //调用方法 [p test2]; [p performSelector:@selector(test2 ...

  7. 用javascript设置和读取cookie的例子

    请看下面用javascript设置和读取cookie的简单例子,现在的问题是,如果要设置的是一个cookie集,比如在cookie1集中有uname,uid两组信息,应该如何写呢?cookie(&qu ...

  8. 解决CURL 请求本地超时

    首先,这样的问题只会出现在Windows+Nginx中. php-cgi 默认使用的是9000端口,即使多个进程也并发的是9000端口 在用户访问一个php页面的时候nginx已将该进程占用,在该进程 ...

  9. Java基础学习(四)

    流程控制 /* 控制流程语句之---if 判断语句 格式一: 只适用于一种情况下去使用. if(判断条件){ 符合条件执行的代码; } 格式二:适用于两种情况下去使用 if(判断条件){ 符合条件执行 ...

  10. 【leetcode】Intersection of Two Linked Lists

    题目简述: Write a program to find the node at which the intersection of two singly linked lists begins. ...