实验时间 2018-11-14
第一部分:理论知识
1.AWT与Swing简介
(1)Swing用户界面库是非基于对等体的GUI工具箱。 Swing具有更丰富并且更方便的用户界面元素集合。 Swing对底层平台的依赖很少,因此与平台相关的bug很少。 Swing会带来交叉平台上的统一视觉体验。 Swing类库被放在javax.swing包里。 (2)两者之间的关系:
大部分AWT组件都有其Swing的等价组件。
Swing组件的名字一般是在AWT组件名前面添加一个字母“J”,如:JButton,JFrame,JPanel等。
2.创建框架
(1)组件:通常把由Component类的子类或间接子类创建的对象称为一个组件。
(2)容器是Java中能容纳和排列组件的组件。.常用的容器是框架(Frame,JFrame)
(3)Container类提供了一个方法add(),用来在容器类组件对象中添加其他组件。
(4)容器本身也是一个组件,可以把一个容器添加到另一个容器里,实现容器嵌套。
3.框架
(1)创建空框架 . 在Java中,常采用框架(Frame)创建初始界面,即GUI的顶层窗口. AWT库中有一个基于对等体的Frame类。 . 该类的Swing版本为JFrame,JFrame是Frame子类。 定位: —常用Component类的setLocation和setBounds方法常用属性 —Title:框架标题 —IconImage:框架图标
java.awt.Component 1.0 – boolean isVisible() 检查组件是否可见 – void setVisible(boolean b) 设置组件可见 – void setSize(int width,int height) 把组件缩放到指 定宽度和高度 – void setBounds(int x,int y,int width,int height) 移动并缩放组件 – Dimension getSize() 得到组件的大小 – void setSize(Dimension d) 把组件缩放到指定的大小
4.2D图形
(1)Java SE了包含一个Java 2D库,该库提供了一个非常强大的图形操作集。 (2) Graphics 2D 类是Graphics 类的子类, Graphics2D类对象通常可用Graphics对象转换而来。
5.颜色的使用
Graphics2D类的setPaint方法(Graphics类为setColor方法)用来设置颜色。 例:g2.setPaint(Color.RED);g2.drawString(“Set Color”,100,100); (1)Color类中定义的13种标准颜色 BLACK、BLUE、CYAN、DARK_GRAY、GRAY、GREEN、 LIGHT_GRAY、MAGENTA、ORANGE、PINK、RED、 WHITE、YELLOW 6,字体的使用:
(1)AWT中定义的五种逻辑字体名 SanaSerif Serif Monospaced Dialog DialogInput 这些逻辑字体在不同语言和操作系统上映射为不同 的物理字体。
(2)字体风格 Font.PLAIN Font.BOLD Fond.ITALIC Fond.BOLD + Font.ITALIC (3)设置字体 Font serif=new Font(“Serif”,Font.BOLD,14); g2.setFont(serif);
第二部分:实验部分:
1、实验目的与要求
(1) 掌握Java GUI中框架创建及属性设置中常用类的API;
(2) 掌握Java GUI中2D图形绘制常用类的API;
(3) 了解Java GUI中2D图形中字体与颜色的设置方法;
(4) 了解Java GUI中2D图像的载入方法。
1、实验目的与要求
(1) 掌握Java GUI中框架创建及属性设置中常用类的API;
(2) 掌握Java GUI中2D图形绘制常用类的API;
(3) 了解Java GUI中2D图形中字体与颜色的设置方法;
(4) 了解Java GUI中2D图像的载入方法。
2、实验内容和步骤
实验1: 导入第10章示例程序,测试程序并进行代码注释。
测试程序1:
l 运行下列程序,观察程序运行结果。
|
import javax.swing.*; public class SimpleFrameTest { public static void main(String[] args) { JFrame frame = new JFrame(); frame.setBounds(0, 0,300, 200); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } } |
import javax.swing.*; public class SimpleFrameTest { public static void main(String[] args) { JFrame frame = new JFrame(); frame.setBounds(0, 0,300, 200); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }
l 在elipse IDE中调试运行教材407页程序10-1,结合程序运行结果理解程序;与上面程序对比,思考异同;
package simpleFrame; import java.awt.*; import javax.swing.*; /** * @version 1.34 2018-04-10 * @author Cay Horstmann */ public class SimpleFrameTest { public static void main(String[] args) { EventQueue.invokeLater(() -> { SimpleFrame frame = new SimpleFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// frame.setVisible(true);//判断页面是否可见 }); } } class SimpleFrame extends JFrame { private static final int DEFAULT_WIDTH = 300; private static final int DEFAULT_HEIGHT = 200; public SimpleFrame()//构造器 { setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);//设置弹出页面的大小 } }