java swing 實現(xiàn)加載自定義的字體_第1頁
java swing 實現(xiàn)加載自定義的字體_第2頁
java swing 實現(xiàn)加載自定義的字體_第3頁
java swing 實現(xiàn)加載自定義的字體_第4頁
全文預覽已結(jié)束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第javaswing實現(xiàn)加載自定義的字體目錄javaswing加載自定義的字體Javaswing更改全局字體

javaswing加載自定義的字體

在實際開發(fā)中,我們需要把字體的名字和字體做一一對應的映射關系,然后需要通過可配置的方式加載自定義的字體.所以就有了這個需求,我們來實現(xiàn)。

首先我們定義一個自定義加載子類的工具類

importjava.awt.Font;

importjava.io.File;

importjava.io.FileInputStream;

importjava.io.IOException;

importjava.io.InputStream;

importjava.io.InputStreamReader;

importjava.util.HashMap;

importjava.util.Map;

importjava.util.Properties;

*字體工具類,獲取需要的字體

publicclassFontUtil{

*所有字體配置

privatestaticMapString,StringfontNameMap=newHashMapString,String

*默認字體的大小

privatestaticfinalfloatdefaultFontSize=20f;

static{

//加載配置文件

Propertiesproperties=newProperties();

//使用properties對象加載輸入流,編碼使用GBK

try{

properties.load(newInputStreamReader(FontUtil.class.getClassLoader().getResourceAsStream("perties"),"GBK"));

}catch(IOExceptione){

System.err.println("perties配置文件不存在");

//獲取key對應的value值

for(Map.EntryObject,Objectentry:properties.entrySet()){

Objectkey=entry.getKey();

Objectvalue=entry.getValue();

if(key!=nullvalue!=null){

fontNameMap.put(String.valueOf(key),String.valueOf(value));

*獲取定義的字體

*@paramkey字體的名字

*@return

publicstaticFontgetConfigFont(Stringkey){

returngetConfigFont(key,defaultFontSize);

*獲取自定義的字體

*@paramkey字體的名字

*@paramfontSize字體的大小

*@return

publicstaticFontgetConfigFont(Stringkey,floatfontSize){

StringfontUrl=fontNameMap.get(key);

if(fontUrl==null){

thrownewRuntimeException("名字是:"+key+"的字體配置不存在");

//默認先看是不是系統(tǒng)字體

Fontfont=newFont(fontUrl,Font.PLAIN,(int)fontSize);

//判斷當前字體存不存在

if("Dialog.plain".equals(font.getFontName())){

try(

InputStreamis=newFileInputStream(newFile(fontUrl));

FontdefinedFont=Font.createFont(Font.TRUETYPE_FONT,is);

//設置字體大小,float型

definedFont=definedFont.deriveFont(fontSize);

returndefinedFont;

}catch(Exceptione){

thrownewRuntimeException("名字是:"+key+"的字體不存在");

returnfont;

}

第二部再就是寫測試代碼:

importjava.awt.*;

publicclassDemo{

publicstaticvoidmain(String[]args)throwsException{

Fonta=FontUtil.getConfigFont("A");

System.out.println(a.getName()+"~"+a.getSize());

Fontb=FontUtil.getConfigFont("B",100);

System.out.println(b.getName()+"~"+b.getSize());

Fontc=FontUtil.getConfigFont("C");

System.out.println(c.getFontName());

Fontd=FontUtil.getConfigFont("D");

}

運行,第四個字體不存在,拋出異常,其他的都正常處理了,A,B都加載了自己配置的字體.

環(huán)境配置,在resources里面新建一個字體配置文件:perties內(nèi)容如下:

本來是幫別人寫的代碼,最后不要了,就直接開源出來了.

Javaswing更改全局字體

這段代碼在jframe顯示前調(diào)用,比如main方法開始就調(diào)用:

publicstaticvoidsetUIFont()

Fontf=newFont("宋體",Font.PLAIN,18);

Stringnames[]={"Label","CheckBox","PopupMenu","MenuItem","CheckBoxMenuItem",

"JRadioButtonMenuItem","ComboBox","Button","Tree","ScrollPane",

"TabbedPane","EditorPane","TitledBorder","Menu","TextArea",

"OptionPane","MenuBar","ToolBar","ToggleButton","ToolTip",

"ProgressBar","TableHeader","Panel","List","ColorChooser",

"PasswordField","TextField","Table","Label","Viewport",

"R

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論