日期:2014-05-20  浏览次数:20663 次

关于JAVA中的g.drawString()方法
我在面版上画一段文字如 "eeeeeeeeee ";
为什么,字体很小的时候如:fontSize   =   1;
g.drawString( "fffffffffffffffffffffffffffffffff ");画面上不显示,
但g.drawString( "wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww ");却可以显示,我知道这跟文字的宽度有关系,W比较胖,所以可以显示,F太苗条了,就不显示.我通过例子证明了这点,但不明白为什么这样,怎么解决这个问题,有没有这方面的专家给指导一下,谢谢:
参考代码:
      /**
          *   テキスト図形にテキストを描写する
          */
        public   void   drawFrame(Graphics   g)   {
                //Modify   by   zuochuanmin   on   2007/04/09   start
                //変更原因:メモのフォントサイズを24にすると、文字がメモよりはみ出した
                int   fontSize   =   (int)(Integer.parseInt(PropertiesDefine.CommentDefine.fontSize)*MainDrawingView.getInstance().scale);
                if(fontSize <=0){
                        fontSize   =   1;
                }
                fFont   =   new   Font(fFont.getName(),   fFont.getStyle(),   fontSize);
                g.setFont(fFont);
                if   (PropertiesDefine.CommentDefine.fontColor   !=   null){
                        g.setColor(stringToColor(PropertiesDefine.CommentDefine.fontColor));
                }
                int   length   =   (int)(10*MainDrawingView.getInstance().scale);
                //   文字列の描画処理
                char[]   chars   =   fText.toCharArray();
                FontMetrics   fm   =   g.getFontMetrics(getFont());
                int   top   =   fOriginY   +   length;   //Modify   by   zuochuanmin   on   2007/1/8
                g.setFont(fFont);
                //System.out.println( "draw   frame   length: "+length);
                int   mysixedWidth   =   fWidth   -length*2;
                int   left   =   fOriginX   +   length;   //Modify   by   zuochuanmin   on   2007/1/8
                int   curWidth   =   0;
                int   temp   =   top;   //Add   by   zuochuanmin   on   2007/01/23
                Dimension   size   =   null;
                double   maxHeight   =   0;
                g.drawString( "ffffffffffffffffffffffff ",   fOriginX,   fOriginY);
                for(int   i   =   0;   i   <   chars.length;   i++){