2017-10-19 3 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; 
} 
関連する問題