3
私はテキストを受け取るJTextAreaを持っていますが、テキストが長すぎるとフィットしないので、スクロールバーが表示されるという問題があります。私が望むのは、JTextAreaの高さに合わせて自動的にフォントサイズを縮小することです。方法下記 テキストフォントを縮小してJTextAreaの高さに合わせる方法は?
私はテキストを受け取るJTextAreaを持っていますが、テキストが長すぎるとフィットしないので、スクロールバーが表示されるという問題があります。私が望むのは、JTextAreaの高さに合わせて自動的にフォントサイズを縮小することです。方法下記 テキストフォントを縮小してJTextAreaの高さに合わせる方法は?
使用、(更新最大と最小サイズのご要望に応じて)java.awt.FontMetrics`クラス `用
public static int getMatchingFontSize(JComponent comp, String string) {
int minSize = 10;
int maxSize = 60;
Dimension size = comp.getSize();
if (comp == null || comp.getFont() == null || string.isEmpty()) {
return -1;
}
//Init variables
int width = size.width;
int height = size.height;
Font font = comp.getFont();
int curSize = font.getSize();
FontMetrics fm = comp.getFontMetrics(new Font(font.getName(), font.getStyle(), maxSize));
while (fm.stringWidth(string) + 4 > width || fm.getHeight() > height) {
maxSize--;
fm = comp.getFontMetrics(new Font(font.getName(), font.getStyle(), maxSize));
curSize = maxSize;
}
while (fm.stringWidth(string) + 4 < width || fm.getHeight() < height) {
minSize++;
fm = comp.getFontMetrics(new Font(font.getName(), font.getStyle(), minSize));
curSize = minSize;
}
if (curSize < minSize) {
curSize = minSize;
}
if (curSize > maxSize) {
curSize = maxSize;
}
return curSize;
}
外観は、それが仕事をします。 – aKilleR
* "問題は、テキストが長すぎてスクロールバーが表示されない場合です。*これは機能であり問題ではありません。 –