java中GUI的awt和Swing的知识点
刚刚学习了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的知识点的更多相关文章
- 十一:Java之GUI图形Awt和Swing
一. AWT和 Swing AWT 和 Swing 是 Java 设计 GUI用户界面的基础.与 AWT 的重量级组件不同,Swing 中大部分是轻量级组件.正是这个原因,Swing 差点儿无所不能, ...
- Java的GUI框架如何选择? Swing、SWT、AWT、SwingX、JGoodies、JavaFX、Apache Pivot、BeautyEye框架(美观)?
AWT 是swing的基础,运行良好,但缺少高级组件.如果您打算创建丰富的应用程序,那么AWT可能不是最好的方法.但是对于不需要丰富用户界面的较小gui应用程序来说.这可能非常适合,因为它是一个久经考 ...
- JAVA中AWT编程
JAVA使用AWT和Swing 类完成图形用户界面编程,AWT全称是抽象窗口工具集(Abstract Window Toolkit),它是最早的sun提供的GUI库(Graphics User Int ...
- 第58节:Java中的图形界面编程-GUI
欢迎到我的简书查看我的文集 前言: GUI是图形用户界面,在Java中,图形用户界面我们用GUI表示,而GUI的完整英文为: Graphical User Interface(图形用户接口), 所谓图 ...
- Java基础——GUI编程(一)
一.定义 GUI全称是Graphical User Interface,即图形用户界面.JDK中提供了AWT 和 Swing 两个包,用于GUI程序的设计和开发. 1.java .awt abstr ...
- java中静态代理跟动态代理之间的区别
文章转载于:http://www.cnblogs.com/xiaoluo501395377/p/3383130.html 在学习Spring的时候,我们知道Spring主要有两大思想,一个是IoC,另 ...
- Java中的IO流大体介绍
由于Java中的IO流是在是知识点繁多,所以我大约花了1周的时间将其整理起来.但是整理起来后并不是将完事了,我还是要分字节流和字符流来讲述.然后字节流和字符流中还有是否带有缓冲流. 讲述完IO流后我将 ...
- Java中的Swing及AWT又称GUI编程
Java中的Swing及AWT又称GUI编程. 关于学习Java要不要学Swing及AWT,这个完全取决于个人的开发及发展方向. 如果从事web方向的开发,则可以不用学习Swing及AWT. 如果从事 ...
- 浅谈JAVA GUI中,AWT与Swing的区别、联系及优缺点
浅谈JAVA GUI中,AWT与Swing的区别.联系及优缺点 A.区别 1.发布的时间 AWT是在JDK 1.0版本时提出的 Swing是在AWT之后提出的(JAVA 2) 2. ”重量” AWT是 ...
随机推荐
- .Net开源oss项目进度更新(含小程序接口)
和大家分享下当前OSS开源项目的进度情况: 一. OSS.Common [开源中国] [github] 经过昨天的努力,oss.common项目初步完成了对.net standard的支持,迁移过程本 ...
- 剑指offer编程题Java实现——面试题6重建二叉树
题目: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2, ...
- 存储过程与SQL语句如何选择
58到家数据库30条军规,有一条是“禁止使用存储过程.视图.触发器.Event”, 高并发大数据的互联网业务,架构设计思路是“解放数据库CPU,将计算转移到服务层”, 并发量大的情况下,这些功能很可能 ...
- linux中添加环境变量(python为例)
最近想用Django搭建个人博客,之前学了些python基础语法,准备边学习Django边实战操作.自己有一个阿里云服务器,用的centOS,自带的是python2.7版本,我直接安装了python3 ...
- leetcode HouseRobber Dp Code
#include <malloc.h> int MAX(int x,int y){ return x>y?x:y;} int rob(int* nums, int numsSize) ...
- ajax 实现加载页面、删除、查看详细信息,以及bootstrap网页的美化
由于有些的程序员可能不是很会Photoshop,所以为了美化页面,我们可以借助工具bootstrap,实现起来相对就要比之前做的美观一些, 今天我用bootstrap把之前做的显示表格进行了一下美 ...
- Docker存储驱动之ZFS简介
ZFS是下一代的文件系统,支持了很多存储高级特性,如卷管理.快照.和校验.压缩和重复删除技术.拷贝等. ZFS由Sun公司创建,现属于Oracle,ZFS是开源的,并基于CDDL license.因为 ...
- SDWebImage下载图片的使用
第一步,下载SDWebImage,导入工程.github托管地址https://github.com/rs/SDWebImage 第二步,在需要的地方导入头文件 1 #import "UII ...
- MSTP多实例的配置
MSTP多实例的配置 这次实验主要是为了加强对stp生成树协议中,RP(根端口),DP(指定端口),AP(阻塞端口)的判断方法:虽然很多时候不需要我们人工判断,因为当我们吧所有的配置好之后,然后开启生 ...
- SSH整合缓存之-Memcached作为hibernate的二级缓存
Hibernate本身不提供二级缓存,所以需要使用第三方插件来作为二级缓存:本次使用memcached作为Hiberbate的二级缓存:添加步骤如下: 一.需要安装memcached服务端 1. 下载 ...