java drawstring字体大小_java – 不同大小的JLabel中心drawString()文本

我的自定义按钮代码是:

public class GreyButton extends JLabel {

private int ButtonWidth,

ButtonHeight;

String ButtonText;

public GreyButton(String BText, int BWidth, int BHeight) {

super(BText);

this.ButtonHeight = BHeight;

this.ButtonWidth = BWidth;

this.ButtonText = BText;

setGreyButton();

}

private void setGreyButton() {

this.setPreferredSize(new Dimension(this.ButtonWidth, this.ButtonHeight));

this.setBackground(Color.LIGHT_GRAY);

this.setOpaque(false);

this.setBorder(BorderFactory.createLineBorder(Color.BLACK, 2));

this.setForeground(Color.WHITE);

this.setHorizontalAlignment(SwingConstants.CENTER); //This line

}

@Override

public void paint(Graphics g) {

paintComponent(g);

}

@Override

public void paintComponent(Graphics g) {

Graphics2D Shape = (Graphics2D) g;

AlphaComposite newComposite = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1.0f);

Shape.setComposite(newComposite);

Color[] FillArray = {Color.WHITE, Color.GRAY};

float[] Distribution = {0.85f, 1.0f};

GradientPaint Fill = new GradientPaint(10, 8, Color.BLACK, 10, 72, Color.WHITE);

Paint OldPaint = Shape.getPaint();

Shape.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

Shape.setPaint(Fill);

Shape.fillRect(0, 0, ButtonWidth, ButtonHeight);

Shape.setPaint(OldPaint);

Shape.setFont(new Font("Monospace", Font.BOLD, 14));

Shape.drawString(ButtonText, 0, 0); //This line

}

}

这是使用自定义2D图形创建JLabel.问题是我试图将文本居中在JLabel中,这应该对构造函数中使用的任何大小都有效.

目前,我需要计算值并相应地设置drawString的第二个和第三个参数.

问题:是否有一种将文本集中在JLabel上的一般方法,其大小可能因每个实例而异?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值