代码之家  ›  专栏  ›  技术社区  ›  clartaq

无法在带有HTML文本的JLabel中设置助记符

  •  1
  • clartaq  · 技术社区  · 16 年前

        JTextArea textArea = new JTextArea(10, 20);
        JLabel label = new JLabel("Text");
        label.setLabelFor(textArea);
        label.setDisplayedMnemonic(KeyEvent.VK_X);
    

    然而,如果 label

        JTextArea textArea = new JTextArea();
        JLabel label = new JLabel("<html>Text</html>"); //!!! NO DECORATION
        label.setLabelFor(textArea);
        label.setDisplayedMnemonic(KeyEvent.VK_X);
    

    这是预期的行为吗?有解决办法吗?

    :根据Aziz的响应,修改示例以使用不属于HTML标记的助记符。

    编辑2 :删除了有关记忆键不起作用的评论,因为进一步的实验表明这取决于使用的外观。

    2 回复  |  直到 16 年前
        1
  •  2
  •   lins314159    16 年前

    BasicLabelUI根据标签是否包含HTML,以不同的方式绘制标签。如果没有,BasicLabelUI将调用自己的一些函数来绘制下划线。如果是,则使用BasicHTML.Renderer,并且不会绘制任何下划线。

    JLabel label = new JLabel("<html>Te<u>x</u>t</html>");
    
        2
  •  1
  •   Aziz    16 年前

    也许是因为 t 在里面 <html> 是划线的那个。

    setDisplayedMnemonicIndex()