java AWT 给 Font 添加删除线和下划线(2D绘图)

本文介绍如何使用Java的AttributedString类为文字添加下划线和删除线效果,通过设置不同属性实现文本修饰。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在给客户做项目的时候客户提出要求要给图片加水印, 在添加文字水印时,让用户自定义自体,当用户在选择字体时,如果勾选了删除线和下划线选项,而java.awt.Font不支持下划线和删除线的style, 这怎么办呢?

字体设置

还好,Java提供了 AttributedString 类, 通过

attributedString.addAttribute(TextAttribute.STRIKETHROUGH, TextAttribute.STRIKETHROUGH_ON);

attributedString.addAttribute(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);

即可给文字添加删除线和下划线,再通过

graphics2D.drawString(as.getIterator(), x, y);

就可以显示下划线和删除线的效果了。

删除线下划线效果

import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.font.TextAttribute; import java.text.AttributedString; import javax.swing.JFrame; import javax.swing.JPanel; public class IteratorUnderStrike extends JPanel{ public void paint(Graphics g) { Graphics2D g2 = (Graphics2D) g; String s = "/"www.java2s.com/" is great."; g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); Font plainFont = new Font("Times New Roman", Font.PLAIN, 24); AttributedString as = new AttributedString(s); as.addAttribute(TextAttribute.FONT, plainFont); as.addAttribute(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON, 1, 15); as.addAttribute(TextAttribute.STRIKETHROUGH, TextAttribute.STRIKETHROUGH_ON, 18, 25); g2.drawString(as.getIterator(), 24, 70); } public static void main(String[] args) { JFrame f = new JFrame(); f.getContentPane().add(new IteratorUnderStrike()); f.setSize(850, 250); f.show(); } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值