2012-02-16 38 views
2

无论如何要将字符串转换为ImageIcon?Java:字符串ImageIcon?

有点像这里的代码:http://www.java2s.com/Code/Java/SWT-JFace-Eclipse/Createaniconinmemory.htm

取而代之的是红色矩形的,我想显示一个String作为的ImageIcon。

我的目的是显示这个动态创建的ImageIcon除了Jtree节点。

+0

为什么不给树的渲染来渲染'String'?我不认为有必要让它成为一个图标(在任何时候)。 – 2012-02-16 10:39:48

+0

是否有可能用一个字符串替换每个树节点的imageicon?这也适用于我。 – KJW 2012-03-01 19:16:57

回答

2

您可以使用对象的drawString将字符串绘制为图形。然后,使用Graphics2D对象直接构建ImageIcon。有关如何绘制字符串到图形的更多详细信息,请参阅here

+0

伟大的链接..... – KJW 2012-03-01 19:16:26

5

您可以使用动态图标,就像这样:

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

我将如何使它的字体被调整大小来填充它所在的按钮? – 2017-08-13 19:00:16