1. ホーム
  2. java

[解決済み] JLabelのフォントを最大サイズに変更する方法

2023-06-14 11:33:50

質問

私は JLabel をコンテナで表示します。 フォントのデフォルトサイズは非常に小さいです。 私は JLabel のテキストが最大サイズになるようにしたいです。

どうすればいいのでしょうか?

どのように解決するのですか?

きれいなコードではありませんが、次のコードは JLabel と呼ばれる label のように、中のテキストがラベルからはみ出さないように、できるだけ内側に収まるようにします。

Font labelFont = label.getFont();
String labelText = label.getText();

int stringWidth = label.getFontMetrics(labelFont).stringWidth(labelText);
int componentWidth = label.getWidth();

// Find out how much the font can grow in width.
double widthRatio = (double)componentWidth / (double)stringWidth;

int newFontSize = (int)(labelFont.getSize() * widthRatio);
int componentHeight = label.getHeight();

// Pick a new font size so it will not be larger than the height of label.
int fontSizeToUse = Math.min(newFontSize, componentHeight);

// Set the label's font size to the newly determined size.
label.setFont(new Font(labelFont.getName(), Font.PLAIN, fontSizeToUse));

基本的に、このコードは JLabel が占めるスペースを調べます。 FontMetrics オブジェクトのテキストをオーバーフローさせずに使用できる最大のフォントサイズを決定し、その情報を使って JLabel .

上記のコードは、おそらく paint メソッドに挿入できます。 JFrame を保持する JLabel またはフォントサイズを変更する必要があるときに呼び出されるいくつかのメソッドです。

以下は、上記のコードを実行したときのスクリーンショットです。



(ソース coobird.net )