2017-10-19 20 views
3

텍스트를받는 JTextArea가 있지만 텍스트가 너무 길어서 적합하지 않아 스크롤 막대가 나타나는 문제가 있습니다. 내가 원하는 것은 자동으로 JTextArea 높이와 일치하도록 글꼴 크기를 줄이는 것입니다. 방법은 아래 Right now its like this텍스트 글꼴을 축소하고 JTextArea 높이와 일치시키는 방법은 무엇입니까?

+0

보면, 그것은 일을 할 것입니다. – aKilleR

+0

* "하지만 문제는 텍스트가 너무 길어서 적합하지 않고 스크롤 막대가 나타납니다."* 문제가 아니라 기능입니다. –

답변

1

사용 (업데이트 최대 및 최소 크기의 귀하의 요구 사항에 따라) 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; 
}