如何在drawString Java中更改字体大小

zbz*_*vlv 31 java graphics fonts awt drawstring

如何使字体大小更大g.drawString("Hello World",10,10);

Joh*_*now 61

g.setFont(new Font("TimesRoman", Font.PLAIN, fontSize)); 
Run Code Online (Sandbox Code Playgroud)

其中fontSize是一个int.drawStringAPI声明x和y参数是坐标,与文本的大小无关.

  • @ shieldgenerator7我想如果你只想改变大小,那么MadProgrammer的建议就更好了:使用`deriveFont(float size)`. (10认同)
  • 这是有效的,但如果您只想设置字体大小而不是字体名称,可以使用`g.getFont().getFontName()`代替字体名称参数 (6认同)
  • 对于那些寻求默认字体的人来说,“g.getFont().getFontName()”是您最好的选择,但在我测试过的所有系统上,它是“Dialog”。 (2认同)

小智 15

因为您不能指望可用的特定字体,所以一种好的方法是从当前字体派生新字体.这给你相同的家庭,体重等等......

Font currentFont = g.getFont();
Font newFont = currentFont.deriveFont(currentFont.getSize() * 1.4F);
g.setFont(newFont);
Run Code Online (Sandbox Code Playgroud)

您还可以使用TextAttribute.

Map<TextAttribute, Object> attributes = new HashMap<>();

attributes.put(TextAttribute.FAMILY, currentFont.getFamily());
attributes.put(TextAttribute.WEIGHT, TextAttribute.WEIGHT_SEMIBOLD);
attributes.put(TextAttribute.SIZE, (int) (currentFont.getSize() * 1.4));
myFont = Font.getFont(attributes);

g.setFont(myFont);
Run Code Online (Sandbox Code Playgroud)

TextAttribute方法通常提供更大的灵活性.例如,您可以将权重设置为半粗体,如上例所示.

最后一个建议......因为监视器的分辨率可能不同并且随着技术的不断增加,所以请避免添加特定数量(例如getSize()+ 2或getSize()+ 4)并考虑相乘.这样,您的新字体始终与"当前"字体(getSize()*1.4)成比例,并且当您获得其中一个漂亮的4K显示器时,您将不会编辑代码.


小智 6

Font myFont = new Font ("Courier New", 1, 17);
Run Code Online (Sandbox Code Playgroud)

17 代表字体大小。一旦你有了它,你可以把:

g.setFont (myFont);
g.drawString ("Hello World", 10, 10);
Run Code Online (Sandbox Code Playgroud)


小智 5

代码示例如下:

g.setFont(new Font("TimesRoman", Font.PLAIN, 30));
g.drawString("Welcome to the Java Applet", 20 , 20);
Run Code Online (Sandbox Code Playgroud)