网站首页 > java教程 正文
在我们的实际工作中,经常需要实现打印功能。但由于历史原因,Java提供的打印功能一直都比较弱。实际上当初的jk根本不支持打印,直到jilk1.1才引入了很轻量的打印支持。
本文将通过一些具体的程序实例来说明如何使用Java编程打印图形?
1、如何打印出一个三角形?
分析代码示例:
public class Test {
public static void main(String[] args) {
// 打印一个4行的三角形
// 外层循环打行
for (int i = 1; i <= 4; i++) {
// 打空格
for (int k = 1; k <=4-i; k++) {
System.out.print(" ");// 注意此处输出不换行
}
// 内层循环打列
for (int j = 1; j <= i*2-1; j++) {
// 每循环一次打一个*
System.out.print("*");// 注意此处不换行,每次打到一行上面
}
// 每打完一行就换行
System.out.println();
}
}
}
2、如何打印出一个矩形?
比如我们要打印一个4行5列的矩形:首先我们要控制行数和列数,使用for循环的嵌套循环完成,外层循环控制行数,内层循环控制列数。
分析代码示例:
public class Test {
public static void main(String[] args) {
// 打印一个4行5列的矩形
// 外层循环打行
for (int i = 1; i <= 4; i++) {
// 内层循环打列
for (int j = 1; j <= 5; j++) {
// 每循环一次打一个*
System.out.print("*");// 注意此处不换行,每次打到一行上面
}
// 每打完一行就换行
System.out.println();
}
}
}
3、如何打印出一个心形图案?
心形图案的实现,重点是心形函数r=a(1–sinθ),据说这是笛卡尔死前寄出的最后一封情书的内容,这里面隐藏着一个刻骨铭心的秘密:“一生只为等待能手绘这个函数给我的人”。心形函数要做直角坐标系转换,然后投影到xOy平面上,就可以调用画椭圆方法来实现画心形图案。
分析代码示例:
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
public class First extends Applet
{
int width, height;
Image image; //缓冲区对象
Graphics g1;
public void init() //Applet初始化时调用
{
setBackground(Color.black); //设置背景
this.setSize(350, 310);
width = getSize().width; //获得窗口宽度
height = getSize().height;
image = createImage(width, height); //创建图像对象
g1 = image.getGraphics();
}
public void paint(Graphics g) //绘图方法
{
g1.clearRect(0, 0, width, height);
g1.setColor(Color.blue);
for(int i = 0; i <= 90; i++) //控制横向变化
for(int j = 0; j <= 90; j++) //控制竖向变化
{
//转换为直角坐标
double r = Math.PI / 45 * i * (1 - Math.sin(Math.PI / 45 * j)) * 18;
double x = r * Math.cos(Math.PI / 45 * j) * Math.sin(Math.PI / 45 * i) + width / 2; //为了在中间显示,加了偏移量
double y = -r * Math.sin(Math.PI / 45 * j) + height / 4;//为了在中间显示,加了偏移量
g1.fillOval((int) x, (int)y, 2,2); //绘制点
}
//显示缓存区的可变Image对象
g.drawImage(image, 0, 0, this);
}
}
猜你喜欢
- 2024-10-31 阿里经典面试-java三线程轮流打印A、B、C的ReentrantLock实现
- 2024-10-31 学习廖雪峰的JAVA教程---反射(名叫Class的类、动态加载)
- 2024-10-31 Java案例-求和与打印九九乘法表(用java打印九九乘法口诀)
- 2024-10-31 Java面试题:怎么让两个线程交替打印1和2(生产者消费者问题)
- 2024-10-31 第九章:Java输入输出流和文件操作
- 2024-10-31 Java 自定义注解+AOP 实现日志打印
- 2024-10-31 Java基础学习:java输出整数类型(java分别输出整数和小数)
- 2024-10-31 不懂这些,你敢说自己知道Java标准输入输出流?
- 2024-10-31 Java高阶面试:如何实现三个线程交替循环打印
- 2024-10-31 字节流的输入输出,JAVA基础知识笔记
你 发表评论:
欢迎- 07-15采用Oracle OSB总线进行服务注册和接入
- 07-15javaEE 新闻管理系统 oracle11+tomcat6
- 07-15从Oracle演进看数据库技术的发展(oracle数据库发展史)
- 07-15如何升级oracle数据库安全补丁(oraclepsu补丁升级)
- 07-15【权威发布】关于Oracle WebLogic Server未授权远程代码执行高危漏洞的预警通报
- 07-15【mykit-data】 数据库同步工具(数据库表同步工具)
- 07-15[Java速成] 数据库基础,Connector/J、JDBC、JPA的关系(day 7)
- 07-15Google前工程主管“入住”Oracle(google浏览器找不到以前的书签)
- 最近发表
-
- 采用Oracle OSB总线进行服务注册和接入
- javaEE 新闻管理系统 oracle11+tomcat6
- 从Oracle演进看数据库技术的发展(oracle数据库发展史)
- 如何升级oracle数据库安全补丁(oraclepsu补丁升级)
- 【权威发布】关于Oracle WebLogic Server未授权远程代码执行高危漏洞的预警通报
- 【mykit-data】 数据库同步工具(数据库表同步工具)
- [Java速成] 数据库基础,Connector/J、JDBC、JPA的关系(day 7)
- Google前工程主管“入住”Oracle(google浏览器找不到以前的书签)
- Oracle数据库云服务系列新增前所未有的企业级功能
- 直播预告丨如何实现Oracle存储过程到java的一键转化
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)