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)
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
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)
| 归档时间: |
|
| 查看次数: |
291195 次 |
| 最近记录: |