IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Graphics绘制图像实例分析-----绘制图形,如何Java的Graphics绘制图像?基础知识介绍以及绘制图形的介绍【java养成】 -> 正文阅读

[Java知识库]Graphics绘制图像实例分析-----绘制图形,如何Java的Graphics绘制图像?基础知识介绍以及绘制图形的介绍【java养成】

Java学习打卡:第十七天

Java养成计划(打卡第17天)

JAVA SE(夯实基础系列----Java初步)


内容管理

今天和大家分享界面编程的一个实例,调用API中的绘图在界面上画出好看的图画,另外再简单介绍一下基础chapter 3的内容,我们之前介绍的是表达式级的数据处理,现在我们分享一下语句级的数据处理。我们先来看看基础部分

语句级处理

语句有很多类别
空语句,表达式语句,块语句,标号语句,断言语句,选择语句,循环语句,跳转语句,同步语句,例外语句

分析一下使用少一些,印象不深刻的

  • 空语句: 仅包含分号,不执行任何操作,用于程序中某处有需求但不需数据处理的,下面这种就是直接到达边界
   for(int i = 0;i <= 1000;i++);
  • 块语句 : 把一组语句用大括号括起来,不需要分号,方法体本身也是一个块语句,还有注意静态代码块

  • 标号语句

    • <标号>: <语句> 在多重循环跳出时用到,对某重for循环OUT: -----就将该for循环标记
  • 断言语句 : assert<布尔表达式>[:<表达式>]; 很少使用,计算结果为true时,程序继续往下执行,否则就会抛出异常 ,但是在默认情况下是不执行的,为使执行,我们使用Dos命令

     java  -ea  MyClass
    
  • 循环、选择语句 :用case运算一年是第几天

多说一点,就是计算机虽然可以高速运算,但是在设计算法时还是要尽可能缩小范围

几个超常用的API的介绍

Math类

  • Math类解决了我们常见的数学运算,减少了部分代码,另外类中还定义了两个double变量:PI(圆周率)和 E (自然)

  • 该类为final类,就是不可以继承,并且该类的方法都是static,不需要创建实例

  • 该类包含的方法有abs max min random ceil(上取整) floor(下取整) round(最接近) exp pow log(自然对数)sin cos tan toDegrees(弧度到角度)toRadians(角度到弧度)
    只是注意sin cos tan 返回的是弧度
    ####System

  • 该类也是final类,不能继承,其中包括final静态量InputStream in 标准输入流,PintStream out标准输出流,PrinrtStream err 标准错误输出流

  • 还有几个set方法用于重新设置字节流,exit方法用于终止JAVA虚拟机,可以打破finally的强制执行,,设置key关键字系统属性

  • currentTimeMillis 可以返回当前时间,自UTC1970年1月1日到现在的毫秒数

  • 格式化输出:和C语言一样可以标准输出,这里的%5d中的5就是输出5字段宽度,不足就补0,超出输出原数

    printf("result is %5b",true); //result is   true
    printf("result is %c",65); //result is A
    printf("result is %3d",65);//result is  65
    printf("result is %6.2f",65.0);//result is   65.00
    printf("result is %9.2e",0.0123);//result is 1.23e-02
    printf("result is %4s","byte");result is  byte
    

    控制台输出

    借助java.util中的Scanner类,Scanner是一种文本扫描器,依据分隔符从文本中抽取符号,默认情况下,扫描器将空白符号作为文本的分隔符

使用Graphics API接口绘制图像

这里一定要正确使用方法,要记得重写paint方法才能绘制成功,是以容器当的画板

Graphics g = getGraphics(); //我们采取这种方式获取Graphics对象,更加灵活
//还有一种就是在paint方法,这里是重写的方法,我们在创建之后就可以自动执行这个代码块,但是使用上面的get方法可以就不局限在paint方法里,说来惭愧,想了很久才掌握这点

这里就演示绘制图形

我们先创建一个shape抽象类表示所有的图形,里面有个抽象方法draw,用具体的实现类如Circle等继承,这里我们采取定义画笔的方式绘制图像

package SecondChapter;

public class Mypic {
	public static void main(String[] args) {
		Picture pic = new Picture(400,300);
		Circle c1 = new Circle(20,108, 23);
		Retangle r1 = new Retangle(100, 109, 28, 28);
		pic.add(c1);
		pic.add(r1);
	}
	//起始类
package SecondChapter;

import java.awt.*;

import javax.swing.JFrame;

@SuppressWarnings("serial")
public class Picture extends JFrame{
//	private JPanel panel = new JPanel();
	Graphics g;
	public Picture(int x,int y) {
		 super();
		 this.setSize(x, y);
		 this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		 this.setLocationRelativeTo(null);
		 this.setVisible(true);
	}
	public void add(Shape s)
	{
		g = getGraphics(); //创建一个画笔
		g.drawImage(getIconImage(), EXIT_ON_CLOSE, ABORT, getForeground(), null);
		s.draw(g);
	}
	public void draw()
	{
		
	}
}
//画板类
package SecondChapter;

import java.awt.Graphics;

public abstract class Shape {
	public abstract void draw(Graphics g);
}
//所有图形的超类
package SecondChapter;

import java.awt.Color;
import java.awt.Graphics;

public class Retangle extends Shape{
	private int x;
	private int y;
	private int height;
	private int width;
	
	public Retangle(int x, int y, int height, int width) {
		super();
		this.x = x;
		this.y = y;
		this.height = height;
		this.width = width;
	}

	@Override
	public void draw(Graphics g) {
		g.setColor(Color.gray);
		g.drawRect(x, y, width, height);
	}

}
//矩形类
package SecondChapter;

import java.awt.Color;
import java.awt.Graphics;

public class Circle extends Shape{
	private int x;
	private int y;
	private int radius;
	
	public Circle(int x, int y, int radius) {
		super();
		this.x = x;
		this.y = y;
		this.radius = radius;
	}

	@Override
	public void draw(Graphics g) {
		g.setColor(Color.blue);
		g.drawOval(x, y,radius*2,radius*2);
	}
	
}
//?类

当然我绘制的很简单,实践的时候需要我们 设计好图像再进行绘制,还有就是坐标设置的要合理

今天的分享就到这里,之后会详细分享画图类,今天只是稍微提一下,复习一下界面的知识~
在这里插入图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-09-27 13:57:03  更:2021-09-27 13:58:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:25:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码