刚刚学习了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.*;

转载于:https://www.cnblogs.com/wansho/p/5104346.html

java中GUI的awt和Swing的知识点相关推荐

  1. java中接口适配器实现,12.1.8 Java中的应用-AWT事件适配器(接口的适配器模式)...

    12.1.8  Java中的应用-AWT事件适配器(接口的适配器模式) 从以上的学习我们已经了解到,基于接口的适配器模式是采用抽象化接口的方式,来达到节省接口函数的目的,这一特性特别适合于Java A ...

  2. java中GUI中显示当前时间_javaGUI界面实现动态时间显示——Swing中的计时器Timer

    在Java中要实现时间的动态显示有不少种方法.下面就介绍其中一种简单的方法给你们.java Swing中的计时器Timer,主要用到javax.swing.*包下的Timer类,该类能够周期的触发Ac ...

  3. java 中gui的作用_java学习中最应该注意的Java GUI用户界面以何为基础

    java中的GUI编程(Graphic User Interface,图形用户接口),是在它的笼统窗(Abstract Window Toolkit,AWT)上完成的,java.awt是AWT的东西类 ...

  4. Java基础-GUI入门-AWT详解

    AWT 2.1.AWT介绍 其包含了很多的类和接口. 元素:窗口,按钮,文本框. Java.awt: 2.2.组件和容器 1.Frame 代码: package com.edwin.lession01 ...

  5. java中GUI中显示当前时间_【java编程】返回当地时间Clock到GUI面板Panel上

    用java编程:返回当地时间到GUI面板上. ClockPanel.java /* * To change this template, choose Tools | Templates * and ...

  6. 【Java】Java中GUI之布局管理器

    [概念] 布局管理器:是对容器中的元素进行布局管理,按照一定的规则将容器里面的元素或组件进行排放. [分类] 1.FlowLayout:流式布局管理器 2.BorderLayout:边框布局管理器 3 ...

  7. java 中jtextfield访问限制_java.swing JtextField 中怎么限制只能输入数字

    2016-04-05 回答 看代码: import java.awt.borderlayout; import javax.swing.jframe; import javax.swing.jlabe ...

  8. java上GUI表格按钮_Java swing选项卡中有表格,表格中有按钮,按钮按不到

    贴出源码 package com.java.gui; import javax.swing.*; import javax.swing.table.DefaultTableModel; import ...

  9. Java的GUI编程---AWT介绍

    AWT AWT介绍 包含了很多类和接口.用于GUI编程:图形用户界面编程 元素:窗口,按钮,文本框 java.awt 组件和容器 Frame package com.akita.lesson01;im ...

最新文章

  1. SAP MM 采购发票上的价格与采购订单上价格的差异
  2. springboot整合springSecurity使用
  3. 基于串级PID的直立车控制算法研究
  4. robotframework常见问题解决汇总
  5. mongodb数据库显示obj_MongoDB基础(三)—基本操作及管理 | leon的博客
  6. TYVJ P1069 cowtour 看不懂题意
  7. matlab 工业相机 曝光时间_Matlab CCD工业相机采集图像问题 - 信息科学 - 小木虫 - 学术 科研 互动社区...
  8. 对象的克隆——原型模式
  9. .Net 程序集 签名工具sn.exe 密钥对SNK文件 最基本的用法
  10. 1082 射击比赛 (20 分)
  11. excel超链接怎么设置_Excel表格使用超链接提示由于本机限制的解决方法
  12. signature=efaf25d07c6ea03d7552906c0caee5a8,幼児の認知発達における関係把握の問題
  13. php读取西门子plc_AB PLC和西门子PLC之间需要交换数据
  14. C# 解析User-Agent工具
  15. vs编译调试遇到问题
  16. mysql用binlog回复_mysql binlog回复数据,亲测
  17. Pytorch Note19 优化算法5 Adadelta算法
  18. 武田宣布美国FDA授予ALUNBRIG® (brigatinib)作为ALK+转移性非小细胞肺癌一线治疗的补充新药申请优先审理
  19. 考研英语阅读真题分析
  20. 机器学习之逻辑回归 Logistic Regression(三)scikit-learn算法库

热门文章

  1. Jenkins系列——使用Dashboard View分类展示作业
  2. IntelliJ IDEA 建空包合并问题。
  3. jquery div拖动效果示例代码
  4. 漂亮的页面向导和Tab插件(Jquery)
  5. 数组之冒泡排序、选择排序
  6. ROS机器人程序设计(原书第2版)3.9.1 使用rqt_rviz在3D世界中实现数据可视化
  7. 在C#代码中应用Log4Net系列教程(附源代码)
  8. 2016年3月23日作业
  9. Android--通知之Toast
  10. 在gem5的full system下运行 x86编译的测试程序 running gem5 on ubuntu in full system mode in x86...