我有一個類延伸BufferedImage
應該顯示爲提供給它的構造函數的字符串。我希望這樣做的原因是允許graphics2D
的抗鋸齒功能(有關更多詳細信息,請參閱我的previous question),如果您有任何更好的建議,那麼通過所有方法建議他們!)。我現在有BufferedImage
類工作,但我無法弄清楚如何確定所需的寬度和高度,以便在實際設置字體之前顯示輸入字符串。一旦設置了初始大小,我也找不到調整BufferedImage
家長的方法。這裏是我的代碼:創建未知尺寸的緩衝圖像
import java.awt.*;
import java.awt.image.BufferedImage;
import javax.swing.*;
public class Test extends JFrame{
public Test(){
this.add(new JLabel(new ImageIcon(new IconImage("Test", new Font("Sans-Serif", Font.PLAIN, 16)))));
this.setVisible(true);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.pack();
}
class IconImage extends BufferedImage{
public IconImage(String text, Font font){
super(..., ..., BufferedImage.TYPE_INT_ARGB);//*****Unknown dimensions*****
Graphics2D g2d = (Graphics2D) this.getGraphics();
g2d.setFont(font);
g2d.setColor(Color.BLACK);
int stringHeight = (int) g2d.getFontMetrics().getStringBounds(text, g2d).getHeight();
g2d.drawString(text, 0 , stringHeight);
g2d.dispose();
}
}
public static void main(String[] args){
new Test();
}
}
有什麼建議嗎?謝謝。
我想問你爲什麼試圖先創建圖像然後創建按鈕?你有可能以相反的方式做到這一點嗎? (如果是的話:你可以測量按鈕,然後創建該圖像)順便說一句:如何顯示比你的組件更大的圖形 - 它的工作原理,但修剪... – 2014-09-23 11:05:34
由於實際的實現只是創建一個按鈕,然後調用'setIcon '和'setRolloverIcon'。我無法弄清楚如何在一個已經調用setText的按鈕上執行反鋸齒。 – Hungry 2014-09-23 11:13:28