2017-10-19 93 views

回答

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; 
} 
相關問題