刚刚学习了java的GUI,写了几个程序,基本熟悉了awt和Swing,下面和大家分享一下知识点

1、JFrame的层次结构



参考:http://tieba.baidu.com/p/2004216123?see_lz=1



Frame 的最底层是 RootPane,

然后是 LayeredPane

再上面就是 ContentPane(默认放控件)

最顶层是 GlassPane(默认透明)

最顶层的 GlassPane 默认是透明的

ContentPane 就是默认盛放控件的那个层次

默认的 ContentPane 就是一个 JPanel

例如: JPanel jp=(JPanel)fr.getContentPane(); 

其实 ContentPane 是添加在 LayeredPane 上的一个控件。

而 LayeredPane 和 GlassPane 是直接添加在 RootPane 上的,

RootPane 直接添加在 JFrame 上



2、java.awt.Container

          继承者 javax.swing.JComponent

setOpaque(boolean isOpaque) //设置是否透明  透明为false



例如:

JPanel jp=(JPanel)fr.getContentPane(); 

jp.setOpaque(false);//设置透明



3、任何组建都可以设置大小和位置



例如:

bu2 = new JButton("Open");

bu2.setSize(80,40);

bu2.setLocation(20, 40);



4、只有Container容器才能设置布局 



例如:

panel.setLayout(new FlowLayout());



注意:

当传入的参数为null时,容器内的每一个控件都要设置大小和位置

例如:

panel.setLayout(null);

bu2 = new JButton("Open");

bu2.setSize(80,40);

bu2.setLocation(20, 40);





5、任何组件都可以设置字体



例如:

la2 = new JLabel("Tools For Windows8.1&10");

la2.setFont(new java.awt.Font("Dialog",1,20));



注意:

转入的字体必须是一个对象



6、给JLabel和JButton添加图标



方法一:

在对象初始化时传入一个图标

例如:

ico = new ImageIcon(this.getClass().getResource("/Image/壁纸.jpg"));

JButton jb = new JButton(ico);

方法二:

new完对象后,调用方法添加

例如:

ico = new ImageIcon(this.getClass().getResource("/Image/壁纸.jpg"));

JButton jb = new JButton();

jb.setIcon(ico);



7、如何给JFrame设置背景图片



通过JLabel来设置:

ico = new ImageIcon(this.getClass().getResource("/Image/壁纸.jpg"));

la1 = new JLabel(ico);

//设置la1距离JFrame0,0,大小为壁纸的大小

//也就是说JFrame的大小也就是壁纸的大小

la1.setBounds(0,0,ico.getIconWidth(),ico.getIconHeight());



fr.setBounds(200, 120, ico.getIconWidth(), ico.getIconHeight());

//添加壁纸

fr.getLayeredPane().add(la1,new Integer(Integer.MIN_VALUE));

//获取frame的(最上层)面板为了设置其背景颜色

JPanel jp=(JPanel)fr.getContentPane();

jp.setOpaque(false);//设置为透明后,就可以显示下一层的壁纸了,但是该层上的控件还是可以显示的

//这一步设置布局非常关键,这样设置可以用于其他组建的定位,设置为null后,每一个组建都要设置大小和位置

panel.setLayout(null);

//接下来就在panel上可以添加控件了,

//注意:

// 每一个控件都要设置大小和位置

fr.add(panel);

fr.setVisable(true);



8、可能出错的地方





1、没有fr.setVisable(true);

注意:

任何控件都可以设置为隐藏或者是显现,只是Container下的对象在new出来以后默认是隐藏的

2、添加事件后要导入包

import java.awt.event.*;







java中GUI的awt和Swing的知识点的更多相关文章

  1. 十一:Java之GUI图形Awt和Swing

    一. AWT和 Swing AWT 和 Swing 是 Java 设计 GUI用户界面的基础.与 AWT 的重量级组件不同,Swing 中大部分是轻量级组件.正是这个原因,Swing 差点儿无所不能, ...

  2. Java的GUI框架如何选择? Swing、SWT、AWT、SwingX、JGoodies、JavaFX、Apache Pivot、BeautyEye框架(美观)?

    AWT 是swing的基础,运行良好,但缺少高级组件.如果您打算创建丰富的应用程序,那么AWT可能不是最好的方法.但是对于不需要丰富用户界面的较小gui应用程序来说.这可能非常适合,因为它是一个久经考 ...

  3. JAVA中AWT编程

    JAVA使用AWT和Swing 类完成图形用户界面编程,AWT全称是抽象窗口工具集(Abstract Window Toolkit),它是最早的sun提供的GUI库(Graphics User Int ...

  4. 第58节:Java中的图形界面编程-GUI

    欢迎到我的简书查看我的文集 前言: GUI是图形用户界面,在Java中,图形用户界面我们用GUI表示,而GUI的完整英文为: Graphical User Interface(图形用户接口), 所谓图 ...

  5. Java基础——GUI编程(一)

    一.定义 GUI全称是Graphical User Interface,即图形用户界面.JDK中提供了AWT 和 Swing 两个包,用于GUI程序的设计和开发. 1.java .awt  abstr ...

  6. java中静态代理跟动态代理之间的区别

    文章转载于:http://www.cnblogs.com/xiaoluo501395377/p/3383130.html 在学习Spring的时候,我们知道Spring主要有两大思想,一个是IoC,另 ...

  7. Java中的IO流大体介绍

    由于Java中的IO流是在是知识点繁多,所以我大约花了1周的时间将其整理起来.但是整理起来后并不是将完事了,我还是要分字节流和字符流来讲述.然后字节流和字符流中还有是否带有缓冲流. 讲述完IO流后我将 ...

  8. Java中的Swing及AWT又称GUI编程

    Java中的Swing及AWT又称GUI编程. 关于学习Java要不要学Swing及AWT,这个完全取决于个人的开发及发展方向. 如果从事web方向的开发,则可以不用学习Swing及AWT. 如果从事 ...

  9. 浅谈JAVA GUI中,AWT与Swing的区别、联系及优缺点

    浅谈JAVA GUI中,AWT与Swing的区别.联系及优缺点 A.区别 1.发布的时间 AWT是在JDK 1.0版本时提出的 Swing是在AWT之后提出的(JAVA 2) 2. ”重量” AWT是 ...

随机推荐

  1. MINA、Netty、Twisted一起学(十二):HTTPS

    由于HTTPS协议是由HTTP协议加上SSL/TLS协议组合而成,在阅读本文前可以先阅读一下HTTP服务器和SSL/TLS两篇博文,本文中的代码也是由这两篇博文中的代码组合而成. HTTPS介绍 上一 ...

  2. 从零开始学JavaWeb

    引言   记得上学时,有位导师说过一句很经典的话:"编程语言只是工具,最重要的是掌握思想." 笔者一直主要从事.net领域的开发工作.随着工作阅历的丰富,越来越深刻的理解当年导师说 ...

  3. Go语言并发机制初探

    Go 语言相比Java等一个很大的优势就是可以方便地编写并发程序.Go 语言内置了 goroutine 机制,使用goroutine可以快速地开发并发程序, 更好的利用多核处理器资源.这篇文章学习 g ...

  4. Exchange Server 2007的即将生命周期,您的计划是?

    多数人做微软技术,Exchange Server 几乎所有 Microsoft 产品,都具有产品支持生命周期,原厂提供的新增功能. 错误修复.安全修补程序等.产品生命周期通常持续时间 10 年,超过期 ...

  5. Java基础一:面向对象的特征

    经过16年校招,自己在Java基础方面也算有了一个质的飞跃,从原来知其然,到现在知其所以然,现将学习心得总结于此. 首先需要知道类和对象是什么? 维基百科定义类为: an extensible pro ...

  6. python中的I/O

    先看比较简单的,标准输入输出流 输出到表屏幕: >>>str = "hello, python" >>>print "content: ...

  7. linux 根分区扩展

    linux根分区扩容 今天网站上传图片出问题了,一开始还以为是程序问题,后来发现原来是服务器存储空间不够,明明有200G的磁盘空间,没理由这么快就用完,查了一下分区情况,原来有两块磁盘,根分区只挂载在 ...

  8. 丑数(USACO)

    这个题是一个动态规划加优化的经典题 1246 丑数 USACO  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解 题目描述 Description 对 ...

  9. Exchange无法发送邮件 未找到匹配的连接器来路由外部收件人解决办法

    使用命令行管理程序创建发送连接器 本示例创建发送连接器,用于集线器传输服务器 HubA 向 Internet 发送电子邮件.   复制 New-SendConnector -Name "In ...

  10. SQLSERVER 切换数据库为单用户和多用户模式

    有时候数据库在占用时,想做一些操作,无法操作.可以尝试将数据库切换为单用户模式来操作.操作完之后再切换回多用户模式. 命令如下: alter database 数据库名 set Single_user ...