我们希望向 JList 显示一个提示,即用户可以使用平台相关键来选择多个项目以进行多选。

但是我还没有找到任何方法在 JLabel 中显示 OS X COMMAND 符号,这意味着在苹果键盘上的命令键(也称为苹果键)上打印的符号。

这是我想要在 OS X 上显示的符号的图片。 COMMAND SYMBOL
(来源: 维基媒体网站)

我也确实想让它独立于平台。

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>&#8984; 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 )
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top