实验十二  图形程序设计

实验时间 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:

运行下列程序,观察程序运行结果。

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);   

   }

}
SimpleFrameTest

 

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);//设置弹出页面的大小

   }

}
SimpleFrameTest

相关文章:

  • 2021-09-09
  • 2021-12-31
  • 2022-01-28
  • 2021-12-18
  • 2021-05-11
  • 2021-11-01
  • 2021-07-24
猜你喜欢
  • 2021-08-30
  • 2021-06-25
  • 2022-03-06
  • 2021-04-30
  • 2022-01-06
  • 2021-06-04
  • 2022-12-23
相关资源
相似解决方案