我有一个接收文本的 JTextArea,但问题是当文本太长时它不适合并且出现滚动条。我想要的是自动缩小字体大小以匹配 JTextArea 高度。
问问题
275 次
1 回答
1
使用以下方法,(根据您的要求更新最大和最小尺寸)
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;
}
于 2017-10-19T04:39:34.720 回答