Java Swing中的小问题

时间:2011-07-12 03:10:38

标签: java swing awt

我已经定义了类扩展BasicToolTipUI的类ToolTipUI,用于绘制swing组件的TipText,我用分隔符“|”(竖条)来区分TipText的两个阶段。 此分隔符之前的所有文本都被视为正常的工具提示文本,此分隔符后面的所有文本都被视为加速器绑定文本。

如您所知,竖线(“|”)是一种非常常见的字符,通常用于字符串中。如果是这种情况,则不应将其视为定界符,并且它具有实际意义。例如:

label.setToolTipText("<HTML><BODY><LEFT>V1|V2</BODY></HTML>"); Normal use
label.setToolTipText("<HTML><BODY><LEFT>V1V2</BODY></HTML> | ctrl+v"); Use as delimiter

我的问题是ToolTipUI现在不知道如何识别这个不同,我无法更改分隔符“|”特别提议的另一个不寻常的价值。

有人有想法吗?

由于

1 个答案:

答案 0 :(得分:2)

如果你不能使用马克·艾略特的建议将这个论点作为两个单独的字符串传递,那么这些内容可能会有所帮助或使事情变得更糟:

  private int delimPosition(String s) {
    int eos = s.toLowerCase().lastIndexOf("</html>");
    return s.indexOf('|', eos+1);
  }

(用作我猜你正在使用的s.indexOf('|')的替代品。)

虽然我怀疑你可能最终会在这种方法中出现很大程度的复杂性,但是一旦完成了所有的角落案例。现在重构可能更好。