2012-02-16 12 views
2

文字列をImageIconに変換する方法はありますか?Java:string to ImageIcon?

ここでのコードのようなの並べ替え:代わりに赤い長方形のhttp://www.java2s.com/Code/Java/SWT-JFace-Eclipse/Createaniconinmemory.htm

、私がイメージアイコンとして文字列を表示したいと思います。

私の意図は、この動的に作成されたImageIconをJtreeノード以外に表示することです。

+0

?私はそれをアイコンにする必要はない(いつでも)。 –

+0

各ツリーノードのimageiconを文字列で置き換えることは可能ですか?これも私のために働くことができます。 – KJW

答えて

2

Graphics2DオブジェクトのdrawStringを使用して、文字列をグラフィックに描画できます。次に、Graphics2Dオブジェクトを使用してImageIconを構築するのは簡単です。文字列をグラフィックスに描画する方法の詳細については、hereを参照してください。

+0

偉大なリンク..... – KJW

5

あなたはこのように、動的なアイコンを使用することができます `STRING`をレンダリングするための木のレンダラを取得しないのはなぜ

public class DynamicIcon implements Icon 
{ 
    Font      font   = new Font("SansSerif", Font.PLAIN, 12); 
    private final static int DEFAULT_SIZE = 16; 
    private int    width  = DEFAULT_SIZE; 
    private int    height  = DEFAULT_SIZE; 

    private String   iconText; 

    public DynamicIcon(String iconText) 
    { 
    this.iconText = iconText; 

    recalculateIconWidth(iconText); 
    } 

    private void recalculateIconWidth(String iconText) 
    { 
    FontRenderContext frc = new FontRenderContext(null, true, true); 
    Rectangle2D bounds = font.getStringBounds(iconText, frc); 
    width = (int) bounds.getWidth(); 
    height = (int) bounds.getHeight(); 
    } 

    @Override 
    public int getIconHeight() 
    { 
    return height; 
    } 

    @Override 
    public int getIconWidth() 
    { 
    return width; 
    } 

    @Override 
    public void paintIcon(Component c, Graphics g, int x, int y) 
    { 
    Graphics2D g2d = (Graphics2D) g; 

    g2d.setFont(font); 

    g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); 
    g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); 

    //FontColor 
    g2d.setPaint(Color.BLACK); 
    g2d.drawString(iconText, 4, 12); 
    } 
} 
+0

私はどのようにフォントがそれが入っているボタンを埋めるようにリサイズされるようにしますか? –