在 JLabel 中显示 OSX 命令符号键
题
我们希望向 JList 显示一个提示,即用户可以使用平台相关键来选择多个项目以进行多选。
但是我还没有找到任何方法在 JLabel 中显示 OS X COMMAND 符号,这意味着在苹果键盘上的命令键(也称为苹果键)上打印的符号。
这是我想要在 OS X 上显示的符号的图片。
(来源: 维基媒体网站)
我也确实想让它独立于平台。
IE。就像是
component.add( new JList() , BorderLayout.CENTER );
component.add( new JLabel( MessageFormat.format("With {0} you can "
+ "select multiple items",
KeyStroke.getKeyStroke( ... , ... ) ) ) , BorderLayout.SOUTH );
哪里而不是 {0} 上面应该出现看到的符号...
你们有人知道该怎么做吗?我知道这一定有可能,因为在 JMenuItems 中有符号...
我自己的(非图形解决方案)如下所示:
add( new JLabel( MessageFormat.format(
"With {0} you can select multiple items" ,
System.getProperty( "mrj.version" ) != null ? "COMMAND" : "CTRL" ) ) ,
BorderLayout.SOUTH );
解决方案
所讨论的符号可通过 Unicode 和 HTML 字符集获得。您所需要做的就是通过以 <html> 开始其文本字符串,然后包含字符代码,使 JLabel 显示 HTML。
JLabel label = new JLabel( "<html>⌘ is the Apple command symbol." );
这可以在 Mac 上运行,但我不知道它在其他平台上会做什么,尽管你似乎已经涵盖了这一点。
其他提示
正如David指出的那样,您可以使用Unicode转义序列\u2318
,尽管它必须以支持它的字体显示。
您的解决方案看起来很完美。我假设您打算将提示代码分解出来,以便重复使用它。
add( new JLabel( MessageFormat.format(
"With {0} you can select multiple items",
getMetaKeyHint(),
BorderLayout.SOUTH );
public String getMetaKeyHint() {
return System.getProperty( "mrj.version" ) != null ? "COMMAND" : "CTRL" );
}
我使用以下代码检查系统并相应地加载
(System.getProperty("os.name").toUpperCase(Locale.US).indexOf("MAC OS X") == 0 )
不隶属于 StackOverflow