我试图在我尝试创建的主菜单中找到不同的文本居中方式,但我尝试过的所有方法都将字符串从第一个字母中心化。有没有办法确定传入的字符串的长度,然后从中找出中心?
答案 0 :(得分:1)
如果您正在使用JLabel,请使用center属性重载构造函数。例如:
label = new JLabel("insert text here");
到
label = new JLabel("insert text here", SwingConstants.CENTER);
答案 1 :(得分:0)
我前一段时间写了this。
/**
* This method centers a <code>String</code> in
* a bounding <code>Rectangle</code>.
* @param g - The <code>Graphics</code> instance.
* @param r - The bounding <code>Rectangle</code>.
* @param s - The <code>String</code> to center in the
* bounding rectangle.
* @param font - The display font of the <code>String</code>
*
* @see java.awt.Graphics
* @see java.awt.Rectangle
* @see java.lang.String
*/
public void centerString(Graphics g, Rectangle r, String s,
Font font) {
FontRenderContext frc =
new FontRenderContext(null, true, true);
Rectangle2D r2D = font.getStringBounds(s, frc);
int rWidth = (int) Math.round(r2D.getWidth());
int rHeight = (int) Math.round(r2D.getHeight());
int rX = (int) Math.round(r2D.getX());
int rY = (int) Math.round(r2D.getY());
int a = (r.width / 2) - (rWidth / 2) - rX;
int b = (r.height / 2) - (rHeight / 2) - rY;
g.setFont(font);
g.drawString(s, r.x + a, r.y + b);
}