易客

          Explore JAVA

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            4 隨筆 :: 1 文章 :: 52 評論 :: 0 Trackbacks
          如果使用JfreeChart默認的聲明方式創建出來的圖表圖片上中文標題是方框或亂碼,這個不用說肯定和字體有關.接下來來看一下解決辦法.

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


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

          找到theme的頂級類StandardChartTheme你會發現這個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);  //------------在這里它將標題的字體設置成了事先定義好的字體,如下兩段代碼;
                          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); //在構造函數里將此字體設置成了"Tahoma"

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

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

          我們只要重新設置TextTitle的字體就行了.
          不過這種方法只適用于中文操作系統,因為已經有中文字體了.要想在非中文系統上用怕是要在程序中帶上一個中文字體庫,然后再調用該字庫.


           TonyLee.

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

          評論

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

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


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


          網站導航:
           
          主站蜘蛛池模板: 石景山区| 交城县| 仁怀市| 岑巩县| 河间市| 台安县| 佛学| 乳山市| 明星| 霞浦县| 德保县| 迭部县| 礼泉县| 万荣县| 苍南县| 盐边县| 略阳县| 桃园市| 竹北市| 南和县| 四平市| 正镶白旗| 二连浩特市| 无为县| 东安县| 莱西市| 肇州县| 新巴尔虎右旗| 溧水县| 通化市| 儋州市| 乌拉特前旗| 兴仁县| 柳河县| 邵东县| 东莞市| 扎囊县| 昆山市| 肇源县| 肇州县| 宁武县|