易客

          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)題是方框或亂碼,這個不用說肯定和字體有關(guān).接下來來看一下解決辦法.

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


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

          找到theme的頂級類StandardChartTheme你會發(fā)現(xiàn)這個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),因為已經(jīng)有中文字體了.要想在非中文系統(tǒng)上用怕是要在程序中帶上一個中文字體庫,然后再調(diào)用該字庫.


           TonyLee.

          posted on 2009-02-23 14:17 y6cn 閱讀(3207) 評論(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)航:
           
          主站蜘蛛池模板: 偃师市| 彰化县| 麦盖提县| 松溪县| 牡丹江市| 泸水县| 彰化县| 湖州市| 桂平市| 白水县| 阿城市| 诸城市| 安溪县| 泽州县| 镇安县| 洛隆县| 衡山县| 乳山市| 长子县| 阜平县| 福海县| 图木舒克市| 江源县| 普洱| 万年县| 达日县| 嘉鱼县| 乾安县| 佛冈县| 深州市| 双桥区| 嵊泗县| 高雄县| 方正县| 宁德市| 舞阳县| 福泉市| 盐亭县| 南岸区| 洛宁县| 图木舒克市|