马凯军201771010116《面向对象与程序设计java》第十二周学习总结(代码片段)

zero-- zero--     2023-01-20     520

关键词:

一、理论与知识学习部分

Java的抽象窗口工具箱(Abstract Window Toolkit, AWT)包含在java.awt包中,它提供了许多用来设计GUI的组件类和容器类。

大部分AWT组件都有其Swing的等价组件,Swing组件的名字一般是在AWT组件名前面添加一个字母“J”。

通常把由Component类的子类或间接子类创建的对象称为一个组件。

组件类的常用API: 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) 把组件缩放到指定的大小

 void setLocation(int x,int y)

容器是Java中能容纳和排列组件的组件。常用的容器是框架(Frame,JFrame)。

Container类提供了一个方法add(),用来在容器类 组件对象中添加其他组件。

容器本身也是一个组件,可以把一个容器添加到 另一个容器里,实现容器嵌套。

框架定位:常用Component类的setLocation和setBounds方法。常用属性:Title:框架标题;IconImage:框架图标。

确定框架大小:通过调用Toolkit类的方法来得到屏幕尺寸信息。

Jframe的结构:它由根面板、层级面板、玻璃面板和内容面板(content pane)四层面板构成。

实验十二  图形程序设计

实验时间 2018-11-14

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

   

技术分享图片

l 在elipse IDE中调试运行教材407页程序10-1,结合程序运行结果理解程序;与上面程序对比,思考异同;

import java.awt.*;
import javax.swing.*;

/**
 * @version 1.33 2015-05-12
 * @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);
   

技术分享图片

l 掌握空框架创建方法;

l 了解主线程与事件分派线程概念;

l 掌握GUI顶层窗口创建技术。

测试程序2

l 在elipse IDE中调试运行教材412页程序10-2,结合程序运行结果理解程序;

import java.awt.*;
import javax.swing.*;

/**
 * @version 1.34 2015-06-16
 * @author Cay Horstmann
 */
public class SizedFrameTest

   public static void main(String[] args)
   
      EventQueue.invokeLater(() ->
         
            JFrame frame = new SizedFrame();
            frame.setTitle("SizedFrame");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
         );
   


class SizedFrame extends JFrame

   public SizedFrame()
   
      // get screen dimensions

      Toolkit kit = Toolkit.getDefaultToolkit();
      Dimension screenSize = kit.getScreenSize();
      int screenHeight = screenSize.height;
      int screenWidth = screenSize.width;

      // set frame width, height and let platform pick screen location

      setSize(screenWidth / 2, screenHeight / 2);
      setLocationByPlatform(true);

      // set frame icon

      Image img = new ImageIcon("icon.gif").getImage();
      setIconImage(img);      
   

技术分享图片

l 掌握确定框架常用属性的设置方法。

测试程序3:

l 在elipse IDE中调试运行教材418页程序10-3,结合运行结果理解程序;

l 掌握在框架中添加组件;

l 掌握自定义组件的用法。

测试程序4:

l 在elipse IDE中调试运行教材424 -425页程序10-4,结合程序运行结果理解程序;

import java.awt.*;
import javax.swing.*;

/**
 * @version 1.34 2015-06-16
 * @author Cay Horstmann
 */
public class SizedFrameTest

   public static void main(String[] args)
   
      EventQueue.invokeLater(() ->
         
            JFrame frame = new SizedFrame();
            frame.setTitle("SizedFrame");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
         );
   


class SizedFrame extends JFrame

   public SizedFrame()
   
      // get screen dimensions

      Toolkit kit = Toolkit.getDefaultToolkit();
      Dimension screenSize = kit.getScreenSize();
      int screenHeight = screenSize.height;
      int screenWidth = screenSize.width;

      // set frame width, height and let platform pick screen location

      setSize(screenWidth / 2, screenHeight / 2);
      setLocationByPlatform(true);

      // set frame icon

      Image img = new ImageIcon("icon.gif").getImage();
      setIconImage(img);      
   

技术分享图片

l 掌握2D图形的绘制方法。

测试程序5:

l 在elipse IDE中调试运行教材432页-433程序10-5,结合程序运行结果理解程序;

import java.awt.*;
import java.awt.font.*;
import java.awt.geom.*;
import javax.swing.*;

/**
 * @version 1.34 2015-05-12
 * @author Cay Horstmann
 */
public class FontTest

   public static void main(String[] args)
   
      EventQueue.invokeLater(() ->
         
            JFrame frame = new FontFrame();
            frame.setTitle("FontTest");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
         );
   


/**
 * A frame with a text message component
 */
class FontFrame extends JFrame

   public FontFrame()
         
      add(new FontComponent());
      pack();
   


/**
 * A component that shows a centered message in a box.
 */
class FontComponent extends JComponent

   private static final int DEFAULT_WIDTH = 300;
   private static final int DEFAULT_HEIGHT = 200;

   public void paintComponent(Graphics g)
   
      Graphics2D g2 = (Graphics2D) g;

      String message = "Hello, World!";

      Font f = new Font("Serif", Font.BOLD, 36);
      g2.setFont(f);

      // measure the size of the message

      FontRenderContext context = g2.getFontRenderContext();
      Rectangle2D bounds = f.getStringBounds(message, context);

      // set (x,y) = top left corner of text

      double x = (getWidth() - bounds.getWidth()) / 2;
      double y = (getHeight() - bounds.getHeight()) / 2;

      // add ascent to y to reach the baseline

      double ascent = -bounds.getY();
      double baseY = y + ascent;

      // draw the message

      g2.drawString(message, (int) x, (int) baseY);

      g2.setPaint(Color.LIGHT_GRAY);

      // draw the baseline

      g2.draw(new Line2D.Double(x, baseY, x + bounds.getWidth(), baseY));

      // draw the enclosing rectangle

      Rectangle2D rect = new Rectangle2D.Double(x, y, bounds.getWidth(), bounds.getHeight());
      g2.draw(rect);
   
   
   public Dimension getPreferredSize()  return new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGHT); 

技术分享图片

l 了解2D图形中字体的设置的方法;

测试程序6:

l 在elipse IDE中调试运行教材436页-437程序10-6,结合程序运行结果理解程序;

l 了解2D图形图像的显示方法。

import java.awt.*;
import javax.swing.*;

/**
 * @version 1.34 2015-05-12
 * @author Cay Horstmann
 */
public class ImageTest

   public static void main(String[] args)
   
      EventQueue.invokeLater(() ->
         
            JFrame frame = new ImageFrame();
            frame.setTitle("ImageTest");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
         );
   


/**
 * A frame with an image component
 */
class ImageFrame extends JFrame

   public ImageFrame()
   
      add(new ImageComponent());
      pack();
   


/**
 * A component that displays a tiled image
 */
class ImageComponent extends JComponent

   private static final int DEFAULT_WIDTH = 300;
   private static final int DEFAULT_HEIGHT = 200;

   private Image image;

   public ImageComponent()
   
      image = new ImageIcon("book.jpg.jpg").getImage();
   

   public void paintComponent(Graphics g)
   
      if (image == null) return;

      int imageWidth = image.getWidth(null);
      int imageHeight = image.getHeight(null);

      // draw the image in the upper-left corner

      g.drawImage(image, 0, 0, null);
      // tile the image across the component

      for (int i = 0; i * imageWidth <= getWidth(); i++)
         for (int j = 0; j * imageHeight <= getHeight(); j++)
            if (i + j > 0) 
               g.copyArea(0, 0, imageWidth, imageHeight, i * imageWidth, j * imageHeight);
   
   
   public Dimension getPreferredSize()  return new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGHT); 

 技术分享图片

实验2课后完成PTA平台题目集:2018秋季西北师范大学面向对象程序设计(Java)练习题集(ch6-ch9)

实验总结:

       通过这次实验的程序,以及课本知识的学习,我感觉Java的学习从刚开始在程序的的下方显示出程序的运行结果到建立新的窗口,是一个很大的转变,在这次的实验主要学会了GUI中框架创建及属性设置中常用类的API。

马凯军201771010116《面向对象程序设计(java)》第一周学习总结

马凯军201771010116《面向对象程序设计(java)》第一周学习总结第一部分:课程准备部分填写课程学习平台注册账号,平台名称注册账号博客园:www.cnblogs.com消遣流年。程序设计评测:https://pintia.cn/[email protected]代码托管平台... 查看详情

马凯军201771010116《面向对象与程序设计java》第十五周学习知识总结(代码片段)

                                 &n 查看详情

马凯军201771010116《面向对象与程序设计java》第十二周学习总结(代码片段)

一、理论与知识学习部分Java的抽象窗口工具箱(AbstractWindowToolkit,AWT)包含在java.awt包中,它提供了许多用来设计GUI的组件类和容器类。大部分AWT组件都有其Swing的等价组件,Swing组件的名字一般是在AWT组件名前面添加一个字母“J... 查看详情

马凯军201771010116《面向对象与程序设计java》第九周学习总结(代码片段)

一.理论知识部分 异常、日志、断言和调试1.异常:在程序的执行过程中所发生的异常事件,它中断指令的正常执行。2.Java的异常处理机制可以控制程序从错误产生的位置转移到能够进行错误处理的位置。3.程序中出现的常见的... 查看详情

马凯军201771010116《面向对象与程序设计java》第十一周学习总结(代码片段)

一.理论知识部分第九章 集合1.数据结构介绍:线性结构:线性表,栈,队列,串,数组,文件。非线性结构:树,图。散列表:又称为哈希表。散列表算法的基本思想是:以结点的关键字为自变量,通过一定的函数关系(散... 查看详情

马凯军201771010116《面向对象程序设计(java)》第七周学习总结(代码片段)

 理论与知识部分多态性:概念:指在程序中同一符号在不同的情况下具有不同的解释。超类中定义的域或方法,被子类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一域或方法在超类及各个子类中具有... 查看详情

马凯军201771010116《面向对象程序设计(java)》第三周学习总结(代码片段)

 第一部分 理论知识学习与复习部分1、在第一章里主要对Java中常见的误解这部分进行了细读,也对Java的“白皮书”术语认真的看了一遍,对Java术语有了更深的理解。2、在第二章中对Java程序的编辑环境eclipse通过课本理... 查看详情

马凯军201771010116《面向对象程序设计(java)》第六周学习总结(代码片段)

第一部分:理论知识学习部分    枚举是一种特殊的数据类型,之所以特殊是因为它既是一种类(class)类型却又比类型多了些特殊的约束,但是这些约束的存在也造就了枚举类型的简洁,安全性以及便捷性。创建... 查看详情

马凯军201771010116《面向对象与程序设计java》第十七周学习总结(代码片段)

一.理论知识部分 Java的线程调度采用优先级策略:优先级高的先执行,优先级低的后执行;多线程系统会自动为每个线程分配一个优先级,缺省时,继承其父类的优先级;任务紧急的线程,其优先级较高;同优先级的线程按“... 查看详情

马凯军201771010116《面向对象与程序设计java》第十六周知识学习总结(代码片段)

一:理论知识部分1.线程的概念:程序是一段静态的代码,它是应用程序执行的蓝本。‐进程是程序的一次动态执行,它对应了从代码加载、执行至执行完毕的一个完整过程。多线程是进程执行过程中产生的多条执行线索。‐线... 查看详情

设计模式与面向对象

面向对象基础抽象封装继承多态组合良好的OO设计可复用可扩充可维护设计模式 查看详情

面向对象的程序设计

阅读目录一面向对象的程序设计的由来二什么是面向对象的程序设计及为什么要有它三类与对象四属性查找五绑定到对象的方法的特殊之处六对象之间的交互七练习八继承与派生九多态与多态性十封装十一绑定方法与非绑定方法... 查看详情

面向对象

一面向对象的程序设计的由来二什么是面向对象的程序设计及为什么要有它三类与对象四属性查找五绑定到对象的方法的特殊之处六对象之间的交互七练习八继承与派生九多态与多态性十封装十一绑定方法与非绑定方法十二小白... 查看详情

面向对象的编程思想和java中类的概念与设计

面向对象的编程思想学习,面向对象内容的三条主线;1.java类及类的对象2.面向对象的三大特征3.其他关键字学习内容:3.1面向对象与面向过程面向对象与面向过程在应用上的区别Java中类的概念与设计类与类之间的关系面向对象的... 查看详情

面向对象与面向过程区别

...步一步实现,使用时依次调用就可以了;区别:面向对象程序设计,往往是从问题的一部分着手,一点一点地构建出整个程序。面向对象设计以数据为中心,类作为表现数据的工具,成为划分程序的基本单位;面向对象是一个抽... 查看详情

面向对象(代码片段)

阅读目录一面向对象的程序设计的由来二什么是面向对象的程序设计及为什么要有它三类与对象四属性查找五绑定到对象的方法的特殊之处六对象之间的交互七练习八继承与派生九多态与多态性十封装十一绑定方法与非绑定方法... 查看详情

面向对象的程序设计

一面向对象的程序设计的由来二什么是面向对象的程序设计及为什么要有它三类和对象3.1类相关知识3.2对象相关知识3.3对象之间的交互3.4类名称空间与对象/实例名称空间3.5小结四继承与派生4.1什么是继承4.2继承与抽象(先抽象... 查看详情

java与面向对象设计

1面向对象与面向过程2.OO的特点 (1)封装性(2)继承性(3)多态性3.ClassandObject(1)defineaclass(2)gloablesandlocalvariables(3)constructor‘sdefinationandapplication(4)createanobjectdeclrationanobject allocatememory(5)us 查看详情