刚刚学习了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. TCP详解

    1. 数据进入协议栈的封装过程 2. TCP连接的三次握手 3. TCP连接的三次握手和关闭时的四次握手 各个状态的意义如下: LISTEN - 侦听来自远方TCP端口的连接请求: SYN-SENT ...

  2. 过程 : 概念 : 结构 jobbox jobPost

    概念是employer创建jobPost时,可以publish或unpublish. sort expired后,会通过server tast 去更新成history.所有的publish和unpub ...

  3. Hello,Kubernetes

    什么是Kubernetes Kubernetes(k8s)是一款开源的以容器为中心的,用于跨主机集群自动部署(automating deployment),控制容器扩展/收缩(scaling)和管理容 ...

  4. Filebeat issue 排查--single.go:140: ERR Connecting error publishing events (retrying): dial tcp ****:5044: i/o timeout

    我个人用docker搭建了一套日志分析平台:ELK+Filebeat 在正常跑了半个多月之后,Kibana刷新日志时突然发现日志不在更新了,停在某个时刻,就再也没有新log. 首先我查看了elk,lo ...

  5. perl 获取系统时间

    最近需要将字符串转换成时间,找了下资料,实战如下,发现时timelocal费了些时间 strftime也可在 c / c++ / awk / php 中使用,用法基本一致. 这个也不错 $time = ...

  6. MurMurHash3

    Created by Austin Appleby,Authored by Yonik Seeley package util.hash; /** * The MurmurHash3 algorith ...

  7. cocos2dx 魔塔项目总结(一)

    <魔塔天城>发布已经有半年的时间了,一直想找时间来总结一下这个项目,但总是一拖再拖.如果再这么拖下去,就永远都不会有时间来写这个总结了,时间总是挤出来的. 魔塔天城使用的cocos2dx ...

  8. KoaHub平台基于Node.js开发的Koa的简单包装到请求库的类似接口

    co-request co-request promisify wrapper for request co-request Simple wrapper to the request library ...

  9. swift -- 静态变量static

    import UIKit class ViewController: UIViewController {     //静态变量  swift中的static静态变量,只能在这里声明,不能在方法中声明 ...

  10. JavaWeb之Servlet总结

    今天上班居然迟到了,昨天失眠了,看完吐槽大会实在不知道做些什么,刚好朋友给我发了两个JavaWeb的练习项目,自己就又研究了下,三四点才睡,可能周日白天睡的太多了,早上醒来已经九点多了,立马刷牙洗脸头 ...