Java 无法在带有HTML文本的JLabel中设置助记符
以下内容将JLabel与JTextArea相关联,并设置用于修饰标签的助记符。在Windows上按Alt-X将焦点移动到JText区域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,
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完成的。