Java 如何在JDK5而不是JDK6中为文本加下划线

Java 如何在JDK5而不是JDK6中为文本加下划线,java,swing,Java,Swing,当我在互联网上搜索时,我发现了一种在字体下面加下划线的方法 Font f=jLabel1.getFont(); Map<TextAttribute,Object> map = new Hashtable<TextAttribute,Object>(); map.put(TextAttribute.UNDERLINE,TextAttribute.UNDERLINE_ON); f=f.deriveFont(map); jLabel1.setFont(f); Font f=j

当我在互联网上搜索时,我发现了一种在字体下面加下划线的方法

Font f=jLabel1.getFont();
Map<TextAttribute,Object> map = new Hashtable<TextAttribute,Object>();
map.put(TextAttribute.UNDERLINE,TextAttribute.UNDERLINE_ON);
f=f.deriveFont(map);
jLabel1.setFont(f);
Font f=jLabel1.getFont();
Map Map=newhashtable();
map.put(texttribute.UNDERLINE,texttribute.UNDERLINE_ON);
f=f.衍生字体(地图);
jLabel1.setFont(f);
它在jdk6上工作得很好,但是在jdk5上不工作,并且没有任何警告。 首先,如何在jdk5上获得相同的效果?
第二,如果TextAttribute.UNDERLINE常量不起作用,为什么会有它呢?

除了有点难看的HTML方法外,我不知道还有什么其他方法:

label.setText("<html>some <u>underlined</u> text</html>");

我认为这段代码可以在JDK.5中使用 text.setText(“0123456789 ABCDEFGHIJKLM nopqrstuvxyz”); //使0123456789显示下划线
obj.underline=true
可以正常工作

  StyleRange style1 = new StyleRange();
    style1.start = 0;
    style1.length = 10;
    style1.underline = true;
    text.setStyleRange(style1);

0123456789 is underlined.

据报道,
deriveFont
方法存在许多缺陷;看见我找不到一个和你的问题完全匹配的,但你会有更好的运气。如果您发现相关的bug报告,可能有解决方法。

看起来这个bug在Java 1.6中已经修复了:您的意思是什么?JLabel没有setStyleRange。我对SWT不太了解,但google让我觉得StyleRange是SWT特有的东西。
  StyleRange style1 = new StyleRange();
    style1.start = 0;
    style1.length = 10;
    style1.underline = true;
    text.setStyleRange(style1);

0123456789 is underlined.