Java如何获取方法参数中的名称
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java如何获取方法参数中的名称相关的知识,希望对你有一定的参考价值。
参考技术A 一、从注解中获取使用注解方式,我们需要自定义一个注解,在注解中指定参数名,然后通过反射机制,获取方法参数上的注解,从而获取到相应的注解信息。这里自定义的注解是Param,通过value参数指定参数名,定义了一个工具类ParameterNameUtils来获取指定方法的参数名列表,这里获取测试类ParameterNameTest中定义的方法method1的参数名列表表,下面是具体的代码。
如何从 Java 中获取字体名称列表
【中文标题】如何从 Java 中获取字体名称列表【英文标题】:How to get list of font names from Java 【发布时间】:2015-05-01 11:15:09 【问题描述】:在 Java 中,我们可以这样创建 Font 对象:
new Font("Helvetica", Font.PLAIN, 12);
我的问题是我们如何从 Java 中获取整个字体名称列表,例如“Helvetica”,我们可以将其用作 Font 构造函数的参数之一?
我尝试了以下方法,但在所有列表中都找不到“Helvetica”。
GraphicsEnvironment ge;
ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
String[] names = ge.getAvailableFontFamilyNames();
Font[] allFonts = ge.getAllFonts();
for(int x=0; x<names.length; x++)
System.out.println(names[x]);
for(int x=0; x<allFonts.length; x++)
System.out.println(allFonts[x].getName());
System.out.println(allFonts[x].getFontName());
System.out.println(allFonts[x].getFamily());
System.out.println(allFonts[x].getPSName());
编辑:更重要的是我也想知道Font构造函数中第一个属性调用是什么new Font("What attribute is this?", Font.PLAIN, 12)
问:是 fontName、family、fontFace、名字还是什么?
【问题讨论】:
你能提供输出吗?就我而言,我看到超过 10 个字符串包含Helivetica
字。
@maxd 我希望我可以,因为这对你们所有人都有用,但是我的输出太长了。超过 3000 行字体。
刚刚过去到 gist.github.com 或 pastebin.com
能否请您也指定您的操作系统?
@maxd Window 7 家庭高级版 SP 1
【参考方案1】:
在您的系统上,该字体很可能被映射到其他东西
Font helvetica = new Font("Helvetica", Font.PLAIN, 12);
System.out.println(helvetica.getFontName(Locale.US));
我明白了
SansSerif.plain
要输出所有本地字体的名称,您可以使用类似
GraphicsEnvironment ge = GraphicsEnvironment
.getLocalGraphicsEnvironment();
Font[] allFonts = ge.getAllFonts();
for (Font font : allFonts)
System.out.println(font.getFontName(Locale.US));
【讨论】:
@ElliotFrisch 感谢您的帮助,但我仍然没有在我的字体列表中看到它。我正在寻找的“helvetica”是什么。是调用 fontName、family、fontFace 还是字体或名称?知道了这一点,我将能够知道使用哪种方法来获取允许的字符串列表以填充 Font 构造函数。谢谢! 这是字体名称,以大写字母开头,可能在您的系统上不可用(不在我的系统上)。 非常感谢您的回复。所以我想我可以简单地使用allFonts[x].getFontName()
?我很困惑,因为 API 只提到了name
而不是fontName
。
字体(和排版)是一个有点复杂的话题,Helvetica 这个名字指的是一种字体。您可以调用Font.getName()
,它返回此Font
的逻辑名称和/或Font.getFontName()
,它表示(作为示例)Helvetica Bold 可以作为字体名称返回.【参考方案2】:
new Font("Helvetica", Font.PLAIN, 12);
在这种情况下,最好使用类似的东西:
new Font(Font.SANS_SERIF, Font.PLAIN, 12);
这将生成该操作系统默认使用的未修饰的Font
。
在 Windows 上它将是 Arial。在 OS X 上它将是 Helvetica。在 *nix 机器上,它可能是第三个未修饰的 Font
。
在回答您的具体问题时,我一直发现“字体系列”字符串对于创建字体实例很有用。
【讨论】:
【参考方案3】:我知道这是一个老问题,但有一些问题没有答案。
更重要的是,我也想知道Font构造函数中第一个属性调用是什么 new Font("What attribute is this?", Font.PLAIN, 12) Q:是fontName,family,fontFace,name还是什么?
如果你用 IDE 反编译 Java 类(我用的是 IntelliJ),你会看到:
public Font(String name, int style, int size)
this.name = (name != null) ? name : "Default";
this.style = (style & ~0x03) == 0 ? style : 0;
this.size = size;
this.pointSize = size;
public String getName()
return name;
public String getFontName()
return getFontName(Locale.getDefault());
这告诉您调用构造函数时使用的名称可以使用 getName 检索,但调用 getFontName 将返回您的默认文本。这就是为什么您可以将名称设置为 Helvetica,然后调用 getFontName 并返回除 Helvetica 以外的其他内容。
【讨论】:
【参考方案4】:这个程序会显示你系统中所有字体的列表:
import java.awt.GraphicsEnvironment;
public class ListJavaFonts
public static void main(String[] args)
String fonts[] =
GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
for ( int i = 0; i < fonts.length; i++ )
System.out.println(fonts[i]);
【讨论】:
以上是关于Java如何获取方法参数中的名称的主要内容,如果未能解决你的问题,请参考以下文章