我如何在JDK5中强调文本,而不是JDK6

时间:2010-04-29 14:55:05

标签: 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);

它在jdk6上运行良好,但它不能在jdk5上运行,并且它不会发出任何警告。 首先,我怎样才能在jdk5上获得相同的效果? 第二,为什么有一个TextAttribute.UNDERLINE常量,如果它不起作用?

3 个答案:

答案 0 :(得分:2)

除了有点丑陋的HTML方法之外,我不知道任何方式:

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

请注意,如果您提供自定义外观,则HTML呈现可能无法按预期工作。

另一种方法是在标签上添加MatteBorder,但是“强调”整个标签:

label.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, Color.BLACK));

答案 1 :(得分:0)

我认为这段代码可以在JDK.5中运行    text.setText(“0123456789 ABCDEFGHIJKLM NOPQRSTUVWXYZ”);     // make 0123456789带下划线     obj.underline=true可能会正常工作。

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

0123456789 is underlined.

答案 2 :(得分:0)

针对deriveFont方法报告了许多错误;见this search。我找不到与你的问题完全匹配的那个,但你可以有更好的运气。如果您找到相关的错误报告,可能会有解决方法。