3
我有一個JTextArea接收文本,但問題是當文本太長,它不適合和滾動條出現。我想要的是自動縮小字體大小以匹配JTextArea高度。 如何使文本字體縮小並匹配JTextArea高度?
我有一個JTextArea接收文本,但問題是當文本太長,它不適合和滾動條出現。我想要的是自動縮小字體大小以匹配JTextArea高度。 如何使文本字體縮小並匹配JTextArea高度?
使用以下方法,(更新最大,並根據您的要求最小尺寸的)
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;
}
找'java.awt.FontMetrics'類,它會做的工作。 – aKilleR
*「,但問題是當文本太長,它不適合和滾動條出現」*這是一個功能,而不是一個問題。 –