变量设置完成后,就可以绘制字符了(这部分代码仍然在paintComponent()方法内部,参考下面代码片段:
示例代码4:
// 循环绘制每一个字符 for (int i = 0; i < chars.length; i++) { char ch = chars[i]; int w = fm.charWidth(ch) + tracking;
g.setColor(left_color); g.drawString("" + chars[i], x - left_x, h - left_y);
g.setColor(right_color); g.drawString("" + chars[i], x + right_x, h + right_y);
g.setColor(getForeground()); g.drawString("" + chars[i], x, h); x += w; //将ANTI-ALIASING属性恢复为缺省值 ((Graphics2D) g).setRenderingHint( RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_DEFAULT);
//调试用 p(Character.toString(ch) + ":" + x); } 上面代码通过简单的for循环来计算每个字符的宽度,并加上tracking值,接着连续绘制三次:第一次带有左偏移,第二次带有右偏移,最后在正常的位置绘制。在循环的最后,你仅需要将增量x赋予下一个字符。代码的最后一句将anti-aliasing状态恢复到缺省值。
完成上述代码后,是时候看看应用到实际中的显示效果了。这里我们绘制一组带有黑色下拉阴影效果,并有些高亮的特效文本(大小:140pt),参考下面代码片段:
示例代码5:
public static void main(String[] args) { // 实例化RichJLabel对象 RichJLabel label = new RichJLabel("Magic", 0);
// 下拉阴影效果 label.setLeftShadow(1, 1, Color.white); label.setRightShadow(2, 3, Color.black); label.setForeground(Color.gray); label.setFont(label.getFont().deriveFont(140f)); // 设置Frame属性 JF 上一页 [1] [2] [3] [4] [5] 下一页
|