国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

JFC/Swing活學(xué)活用JLabel文字魔法

2019-11-18 13:35:52
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  前言

  本文將講述如何借助java 2D的"魔力"來(lái)幫助JFC/Swing的JLabel組件創(chuàng)建更加豐富多彩的應(yīng)用。

  JLabel作為JFC/Swing架構(gòu)的基礎(chǔ)組件之一,應(yīng)用非常廣泛。當(dāng)你想要繪制不可編輯的文本時(shí),JLabel是JFC/Swing提供給我們的唯一選擇。一般來(lái)說(shuō),改變字體、字號(hào)、字體顏色,甚至可以加入圖標(biāo)。通過(guò)在組件中應(yīng)用Html語(yǔ)言,甚至可以加入下劃線等特效。對(duì)于大多數(shù)應(yīng)用來(lái)說(shuō),這已經(jīng)足夠好了。但有時(shí)你可能有更進(jìn)一步的要求,比如你需要下拉陰影效果或浮雕效果的時(shí)候?這時(shí)標(biāo)準(zhǔn)的JLabel就無(wú)能為力了,我們不得不結(jié)合強(qiáng)大的Java 2D應(yīng)用,擴(kuò)展JLabel的功能,以完成下拉陰影,輪廓線,甚至是3D效果之類的特效。幸運(yùn)的是,JLabel的良好擴(kuò)展性,使這一切皆為可能,并很輕易。

  大多數(shù)文字特效都可以通過(guò)兩種簡(jiǎn)單的方式來(lái)完成。第一種,可以通過(guò)多次重復(fù)繪制文本,每次一點(diǎn)點(diǎn)偏移或每次不同顏色,來(lái)創(chuàng)建類似下拉陰影和浮雕之類的特效。第二種,可以通過(guò)調(diào)整單詞中字符的間隔(在文字處理系統(tǒng)中它被稱作字符間隙(tracking))來(lái)實(shí)現(xiàn)。字符間隙通常被加到字體的缺省間隙之上。因而,字符間隙加1意味著一個(gè)單詞中每一個(gè)字符之間的間隙都在缺省的基礎(chǔ)上加1。假如將該值賦為0則字符間保持缺省的間隙。

  為了實(shí)現(xiàn)上面所描述的功能,我們必須重載JLabel中尺寸相關(guān)和繪制相關(guān)的代碼,在這里我們新建了一個(gè)擴(kuò)展JLabel的類RichJLabel,參考下面的示例代碼:(具體的代碼請(qǐng)參考附錄)

  示例代碼1:

public class RichJLabel extends JLabel
{
 /**
 * 字符間隙
 */
 PRivate int tracking;
 /**
 * 構(gòu)造函數(shù)
 *
 * @param text 文本
 * @param tracking 字符間隙
 */
 public RichJLabel(String text, int tracking)
 {
  super(text);
  this.tracking = tracking;
 }

 // 文本的定位信息
 private int left_x, left_y, right_x, right_y;

 // 文本的顏色信息
 private Color left_color, right_color;

 /**
 * 設(shè)置左陰影
 *
 * @param x 定位信息
 * @param y 定位信息
 * @param color 顏色
 */
 public void setLeftShadow(int x, int y, Color color)
 {
  left_x = x;
  left_y = y;
  left_color = color;
 }

 /**
 * 設(shè)置右陰影
 *
 * @param x 定位信息
 * @param y 定位信息
 * @param color 顏色
 */
 public void setRightShadow(int x, int y, Color color)
 {
  right_x = x;
  right_y = y;
  right_color = color;
 }
}


  RichJLabel擴(kuò)展了標(biāo)準(zhǔn)的javax.swing.JLabel,并在構(gòu)造函數(shù)中加入了tracking參數(shù)。接下來(lái),它增加了兩個(gè)方法用來(lái)繪制左陰影和右陰影。這里之所以稱之為陰影是因?yàn)樗鼈兝L制在主體文本的下面,但它們看起來(lái)到底像不像陰影這取決于它的顏色,以及x-和y-的偏移量。

  JLabel自動(dòng)通知布局治理器它的最佳尺寸依靠于字體的大小。當(dāng)你加入定制的tracking時(shí),尺寸將會(huì)變得不準(zhǔn)確,導(dǎo)致JLabel太小以至于容納不下所顯示的字體。對(duì)于小字體而言這并不輕易引起人們的注重,但對(duì)于一些非凡顯示效果的字體(如廣告字之類的字體被放大,一個(gè)字可能會(huì)占用半張紙或更多的)而言,我們就不得不想辦法加以改善了。

photoshop教程 數(shù)據(jù)結(jié)構(gòu) 五筆輸入法專題 QQ病毒專題 共享上網(wǎng)專題 Google工具和服務(wù)專題




發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 阿勒泰市| 栾川县| 吕梁市| 广灵县| 镇巴县| 华宁县| 乌拉特前旗| 威宁| 类乌齐县| 无棣县| 茌平县| 尉氏县| 临夏县| 潍坊市| 中西区| 张北县| 安义县| 融水| 尚志市| 织金县| 霍邱县| 桂林市| 纳雍县| 南安市| 长泰县| 富裕县| 格尔木市| 陇南市| 新昌县| 元氏县| 加查县| 金溪县| 星座| 阳新县| 无极县| 宣武区| 固始县| 海丰县| 和平县| 连云港市| 汶上县|