首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

关于JAVA中的g.drawString()方法,该如何处理

2012-01-21 
关于JAVA中的g.drawString()方法我在面版上画一段文字如 eeeeeeeeee 为什么,字体很小的时候如:fontSize

关于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++){


                        //   文字のサイズ
                        char   ch   =   chars[i];
                        size   =   fFont.createGlyphVector(((Graphics2D)   g).getFontRenderContext(),
                                      " "   +   ch).getVisualBounds().getBounds().getSize();
                        double   tempH   =   size.getHeight();
                        if(   maxHeight <tempH   ){
                                maxHeight   =   tempH;
                        }
                }
                if(maxHeight <=0){
                        maxHeight=1;
                }
                int   lineCount   =   0;
                for   (int   i   =   0;   i   <   chars.length;   i++){
                        //   文字のサイズ
                        char   ch   =   chars[i];
                        int   w   =   fm.charWidth(ch);
                        if(w <=0){
                                w=1;
                        }
                        if(   i==0   ){
                                top   +=   maxHeight;
                                //System.out.println( "maxHeight: "   +   maxHeight);
                        }
                        //   改行の処理
                        curWidth   =   curWidth   +   w;
                        //Modify   by   zuochuanmin   on   2007/1/8   end
                        //Modify   by   zuochuanmin   on   2007/1/8   start
                        if   (curWidth   >   mysixedWidth){
                                curWidth   =   w;


                                left   =   fOriginX   +   length;   //Modify   by   zuochuanmin   on   2007/01/23
                                top   =   top   +   (int)maxHeight   +   (int)   (3   *   MainDrawingView.getInstance().scale);
                                lineCount++;
                        }
                        //Modify   by   zuochuanmin   on   2007/1/8   end

                        //Modify   by   zuochuanmin   on   2007/01/23   start
                        if   ((top   -   temp)   >   (fHeight   -   length*2)){
                               
                                break;
                        }
                        //Modify   by   zuochuanmin   on   2007/01/23   end

                        //   文字列を描画する
                        g.drawString( " "   +   chars[i],   left,   top);
                        //g.drawString( "w ",   left,   top);
                        left   +=   w;

                        ((Graphics2D)   g).setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
                                        RenderingHints.VALUE_TEXT_ANTIALIAS_DEFAULT);
                }

[解决办法]
不是高手,也帮你顶
[解决办法]
可以去找JAVA API认真看看

热点排行