java drawstring 换行_java Graphics2D drawString()内容换行问题

//字符串总宽度

private int getStringLength(Graphics g,String str) {

char[] strcha=str.toCharArray();

int strWidth = g.getFontMetrics().charsWidth(strcha, 0, str.length());

System.out.println("字符总宽度:"+strWidth);

return strWidth;

}

//每一行字符串宽度  自定义  也就是画布中一行的宽度

int rowWidth=1110;

//字符串字符的个数

int strnum= str.length();

//每一行字符的个数

private int getRowStrNum(int strnum,int rowWidth,int strWidth){

int rowstrnum=0;

rowstrnum=(rowWidth*strnum)/strWidth;

System.out.println("每行的字符数:"+rowstrnum);

return rowstrnum;

}

//字符行数

private int getRows(int strWidth,int rowWidth){

int rows=0;

if(strWidth%rowWidth>0){

rows=strWidth/rowWidth+1;

}else{

rows=strWidth/rowWidth;

}

System.out.println("行数:"+rows);

return rows;

}

//字符高度

private int getStringHeight(Graphics g) {

int height = g.getFontMetrics().getHeight();

System.out.println("字符高度:"+height);

return height;

}

ps:Graphics  注意设置font 才能计算宽度和高度

开始绘制

private void drawStringWithFontStyleLineFeed(Graphics g, String strContent, int loc_X, int loc_Y, Font font){

g.setFont(font);

//获取字符串 字符的总宽度

int strWidth =getStringLength(g,strContent);

//每一行字符串宽度

int rowWidth=1110;

System.out.println("每行字符宽度:"+rowWidth);

//获取字符高度

int strHeight=getStringHeight(g);

//字符串总个数

System.out.println("字符串总个数:"+strContent.length());

if(strWidth>rowWidth){

int rowstrnum=getRowStrNum(strContent.length(),rowWidth,strWidth);

int rows= getRows(strWidth,rowWidth);

String temp="";

for (int i = 0; i < rows; i++) {

//获取各行的String

if(i==rows-1){

//最后一行

temp=strContent.substring(i*rowstrnum,strContent.length());

}else{

temp=strContent.substring(i*rowstrnum,i*rowstrnum+rowstrnum);

}

if(i>0){

//第一行不需要增加字符高度,以后的每一行在换行的时候都需要增加字符高度

loc_Y=loc_Y+strHeight;

}

g.drawString(temp, loc_X, loc_Y);

}

}else{

//直接绘制

g.drawString(strContent, loc_X, loc_Y);

}

}

java写文件实现换行

Java 写文件实现换行   第一种: 写入的内容中利用\r\n进行换行 File file = new File("D:/text"); try { if(!file.exist ...

Java 创建文本内容

Java 创建文本内容 import java.io.FileWriter; import java.io.IOException; public class TestFile { public st ...

element table 组件内容换行方案

element table 组件内容换行方案 white-space的值: normal 默认.空白会被浏览器忽略.pre 空白会被浏览器保留.其行为方式类似 HTML 中的

 标 ...

java读取文本文件内容2

版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/183 很久之前写了一篇Java读取文本文件内容,链接地址是 ...

java读取文本文件内容

版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/128 java读取文本文件内容 今天写代码写着要调试一个很 ...

关于Html中的title属性内容换行,以及Bootstrap的tooltip的使用

1.HTML中的title属性的内容换行: 鼠标经过悬停于对象时提示内容(title属性内容)换行排版方法,html title 换行方法总结. html的title属性默认是显示一行的.如何换行呢? ...

html title属性内容换行方法(静态页面)

鼠标经过悬停于对象时提示内容(title属性内容)换行排版方法,html title 换行方法总结. html的title属性默认是显示一行的,这里介绍两种换行方法为大家分享使用. 一.直接title ...

Java编写email实现内容换行

用java编写的发送邮件要使用
来实现换行,而不能使用\n,或者\r\n // 5. Content: 邮件正文(可以使用html标签)(内容有广告嫌疑,避免被邮件服务器误认为是滥发 ...

随机推荐

git上传代码到osc&commat;git

1.get an account 2.get a ssh-key 3.git setting git config --global user.name "...." git co ...

jQuery中设置form表单中action值与js有什么不同。。。。

jQuery中设置form表单中action值与js有什么不同.... HTML代码如下:

tornado 第二种路由方法(装饰器)

#!/usr/bin/env python # _*_coding:utf-8 _*_ import tornado.ioloop import tornado.web application = t ...

Linux内核之内存管理完全剖析

linux虚拟内存管理功能 ? 大地址空间:? 进程保护:? 内存映射:? 公平的物理内存分配:? 共享虚拟内存.实现结构剖析   (1)内存映射模块(mmap):负责把磁盘文件的逻辑地址映射到虚拟地 ...

Centos7安装Xmind

1.首先,下载对应版本的deb包,32bit系统下载32bit软件包,64bit系统下载64bit软件包 2.解压deb包,得到data.tar.gz 和control.tar.gz 两个归档文件 3 ...

用saxon框架对xml数据进行过滤 - 程序员的天堂 - ITeye技术网站

用saxon框架对xml数据进行过滤 博客分类: Java   Saxon 是一个 XSLT 和XQuery处理器.它是使用 XML 文档和样式表作为输入,然后生成结果文档作为输出的程序,它还包括了一 ...

VB6之WM&lowbar;COPYDATA

WM_COPYDATA消息是一种进程间通信的一种方式,参考文档如下: http://msdn.microsoft.com/en-us/library/windows/desktop/ms649011( ...

get&lpar;&rpar; got an unexpected keyword argument

TypeError: get() got an unexpected keyword argument 'news_id'ERROR basehttp 154 "GET /news/3/ H ...

Codeforces Global Round 1 自闭记

A:签到. #include #include #include #include ...

H3C常用命令详解

H3C常用命令详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 1.关闭后台日志输出 sys [yinzhengjie]undo info- ...

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值