易客

          Explore JAVA

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            4 隨筆 :: 1 文章 :: 52 評論 :: 0 Trackbacks
          <2009年2月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          1234567

          常用鏈接

          留言簿(4)

          隨筆檔案(5)

          相冊

          收藏夾(7)

          JAVA

          最新隨筆

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          如果使用JfreeChart默認(rèn)的聲明方式創(chuàng)建出來的圖表圖片上中文標(biāo)題是方框或亂碼,這個(gè)不用說肯定和字體有關(guān).接下來來看一下解決辦法.

          打開doc文件里的TextTitle類你會(huì)發(fā)現(xiàn)
           
          /** The default font. */
           
          public static final Font DEFAULT_FONT = new Font("SansSerif", Font.BOLD,12);


          JFreeChart里最后將你創(chuàng)建的實(shí)例傳給了另一個(gè)類的方法:currentTheme.apply(chart);

          找到theme的頂級類StandardChartTheme你會(huì)發(fā)現(xiàn)這個(gè)apply()方法,
          public void apply(JFreeChart chart) {
                      
          if (chart == null) {
                          
          throw new IllegalArgumentException("Null 'chart' argument.");
                      }
                      TextTitle title 
          = chart.getTitle();
                      
          if (title != null) {
                          title.setFont(
          this.extraLargeFont);  //------------在這里它將標(biāo)題的字體設(shè)置成了事先定義好的字體,如下兩段代碼;
                          title.setPaint(this.titlePaint);
                      }


          123        private Font extraLargeFont;


          294        public StandardChartTheme(String name) {
          295            if (name == null) {
          296                throw new IllegalArgumentException("Null 'name' argument.");
          297            }
          298            this.name = name;
          299            this.extraLargeFont = new Font("Tahoma", Font.BOLD, 20); //在構(gòu)造函數(shù)里將此字體設(shè)置成了"Tahoma"

          現(xiàn)在我們已經(jīng)很清楚不能正確顯示中文的原因了,如何來解決呢?
          很簡單:

          JFreeChart chart=ChartFactory.createPieChart(titleString,pieDataset,true,true,false);
                  chart.getTitle().setFont(
          new Font("宋體", Font.BOLD,12));

          我們只要重新設(shè)置TextTitle的字體就行了.
          不過這種方法只適用于中文操作系統(tǒng),因?yàn)橐呀?jīng)有中文字體了.要想在非中文系統(tǒng)上用怕是要在程序中帶上一個(gè)中文字體庫,然后再調(diào)用該字庫.


           TonyLee.

          posted on 2009-02-23 14:17 y6cn 閱讀(3212) 評論(2)  編輯  收藏

          評論

          # re: JfreeChart標(biāo)題中文亂碼的解決 2009-05-13 09:15 小三文魚
          呵呵 很好哦 講的簡單易懂  回復(fù)  更多評論
            

          # re: JfreeChart標(biāo)題中文亂碼的解決 2009-08-31 10:54 Nassir
          很好....  回復(fù)  更多評論
            


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 盈江县| 灵寿县| 南投县| 久治县| 恭城| 正阳县| 南乐县| 乐东| 常德市| 鹿泉市| 简阳市| 三门县| 大洼县| 通海县| 林甸县| 惠安县| 马尔康县| 桃园市| 买车| 柳林县| 稷山县| 紫阳县| 金沙县| 姜堰市| 库伦旗| 五指山市| 大英县| 长兴县| 新源县| 三河市| 治多县| 上杭县| 库车县| 阜南县| 雷波县| 双柏县| 宁晋县| 武山县| 合川市| 长治县| 峡江县|