Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法在带有HTML文本的JLabel中设置助记符_Java_Swing - Fatal编程技术网

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

Java 无法在带有HTML文本的JLabel中设置助记符,java,swing,Java,Swing,以下内容将JLabel与JTextArea相关联,并设置用于修饰标签的助记符。在Windows上按Alt-X将焦点移动到JText区域 JTextArea textArea = new JTextArea(10, 20); JLabel label = new JLabel("Text"); label.setLabelFor(textArea); label.setDisplayedMnemonic(KeyEvent.VK_X); 但是,如果标签使用HTML,

以下内容将JLabel与JTextArea相关联,并设置用于修饰标签的助记符。在Windows上按Alt-X将焦点移动到JText区域

    JTextArea textArea = new JTextArea(10, 20);
    JLabel label = new JLabel("Text");
    label.setLabelFor(textArea);
    label.setDisplayedMnemonic(KeyEvent.VK_X);
但是,如果
标签
使用HTML,则标签会按预期显示,但不会用助记符修饰

    JTextArea textArea = new JTextArea();
    JLabel label = new JLabel("<html>Text</html>"); //!!! NO DECORATION
    label.setLabelFor(textArea);
    label.setDisplayedMnemonic(KeyEvent.VK_X);
JTextArea textArea=新的JTextArea();
JLabel label=新的JLabel(“文本”);/!!!没有装饰
label.setLabelFor(文本区域);
label.setdisplayednemonic(KeyEvent.VK_X);
这是预期的行为吗?有解决办法吗

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


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

可能是因为
中的
t
是带下划线的


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

最简单的解决方法是:

JLabel label = new JLabel("<html>Te<u>x</u>t</html>");
JLabel标签=新的JLabel(“文本”);

没有。很抱歉,本应为示例使用不同的助记符,但即使我将其更改为“x”或使用setDisplayedMnemonicIndex()(或两者都使用),它仍然不起作用。我也会编辑这个例子。谢谢。根据你的回答,我在两个不同的L&F中尝试了实际的代码,尽管没有一个按照预期装饰标签,但按助记键是有效的。我将再次编辑该问题,删除关于该键不起作用的注释。而强力html下划线也能起作用。谢谢。可能是因为他们都是从巴西克拉贝里继承来的。在我看来,这幅画最终是由javax.swing.text.html.StyleSheet完成的。