代码之家  ›  专栏  ›  技术社区  ›  Daniel Hiller

在jlabel中显示osx命令符号键

  •  3
  • Daniel Hiller  · 技术社区  · 16 年前

    我们希望向jlist显示一个提示,即用户可以使用用于multisect的平台相关键选择多个项目。

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

    这是我要在OS X上显示的符号的图片。 COMMAND SYMBOL

    我也希望IT平台独立。

    例如

    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 );
    
    4 回复  |  直到 12 年前
        1
  •  2
  •   banjollity    16 年前

    所讨论的符号可以通过Unicode和HTML字符集使用。您只需使用<html>启动其文本字符串,然后包含字符代码,即可使jLabel显示HTML。

    JLabel label = new JLabel( "<html>&#8984; is the Apple command symbol." );
    

    这将在Mac上工作,但我不知道它在其他平台上会做什么,尽管你似乎已经掩盖了这一点。

        2
  •  1
  •   PhiLho    16 年前

    正如大卫指出的,您可以使用Unicode转义序列 \u2318 尽管它必须以支持它的字体显示。

        3
  •  0
  •   Steve McLeod    16 年前

    你的解决方案看起来很完美。我假设您打算将提示代码分解出来,以便重用它。

    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" );
    }
    
        4
  •  0
  •   Dan    16 年前

    我使用以下代码检查系统并相应地加载

    (System.getProperty("os.name").toUpperCase(Locale.US).indexOf("MAC OS X") == 0 )