如何更改JLabel的字体大小以获取最大大小

g12*_*23k 66 java size fonts containers jlabel

我有JLabel一个容器.字体的defaut大小非常小.我JLabel想要采取最大尺寸的文本.

我怎样才能做到这一点?

Asa*_*vid 107

label = new JLabel("A label");
label.setFont(new Font("Serif", Font.PLAIN, 14));
Run Code Online (Sandbox Code Playgroud)

取自如何在Swing组件中使用HTML


coo*_*ird 72

不是最漂亮的代码,但是下面将为JLabel被调用者选择合适的字体大小,label使得内部文本尽可能地适合内部而不会溢出标签:

Font labelFont = label.getFont();
String labelText = label.getText();

int stringWidth = label.getFontMetrics(labelFont).stringWidth(labelText);
int componentWidth = label.getWidth();

// Find out how much the font can grow in width.
double widthRatio = (double)componentWidth / (double)stringWidth;

int newFontSize = (int)(labelFont.getSize() * widthRatio);
int componentHeight = label.getHeight();

// Pick a new font size so it will not be larger than the height of label.
int fontSizeToUse = Math.min(newFontSize, componentHeight);

// Set the label's font size to the newly determined size.
label.setFont(new Font(labelFont.getName(), Font.PLAIN, fontSizeToUse));
Run Code Online (Sandbox Code Playgroud)

基本上,代码JLabel通过使用FontMetrics对象来查看文本占用的空间大小,然后使用该信息来确定可以使用的最大字体大小而不会溢出文本JLabel.

上面的代码可以插入到也许paint的方法JFrame,其保持JLabel或一些方法时需要改变的字体大小将被调用.

以下是上述代码的截图:

alt text http://coobird.net/img/growing-text.png


Ehs*_*dar 9

 JLabel textLabel = new JLabel("<html><span style='font-size:20px'>"+Text+"</span></html>");
Run Code Online (Sandbox Code Playgroud)


小智 5

JLabel label = new JLabel("Hello World");
label.setFont(new Font("Calibri", Font.BOLD, 20));
Run Code Online (Sandbox Code Playgroud)