Java如何修改g.drawString绘制的文本颜色 实现指定字符串显示为红色
问题原因
g.setColor()是修改Graphics画笔全局颜色属性的方法,没有可用于字符串拼接的有效返回值,你将它写在drawString的字符串参数内的写法完全无法生效,还会额外拼接无效内容到显示文本中。
解决方案
场景1:整段文本(包含Task: 前缀)全部显示为红色
直接修改原有颜色设置即可:
// 将画笔颜色从白色改为红色 g.setColor(Color.red); g.drawString("Task: " + currentTask, 13, 60); // 若后续需要绘制其他白色内容,执行以下语句重置颜色 // g.setColor(Color.white);
场景2:仅currentTask部分显示为红色,Task: 前缀保留白色
单次drawString调用只能使用同一种颜色,因此需要拆分两次绘制,通过计算前缀宽度定位第二段文本的位置:
g.setColor(Color.white); String prefix = "Task: "; // 先绘制白色前缀 g.drawString(prefix, 13, 60); // 计算前缀的像素宽度,得到currentTask的起始x坐标 int prefixWidth = g.getFontMetrics().stringWidth(prefix); // 切换颜色为红色后绘制currentTask g.setColor(Color.red); g.drawString(currentTask, 13 + prefixWidth, 60);
内容的提问来源于stack exchange,提问作者devpeterrrrr
相关产品推荐
相关产品推荐

