在Java中使所有工具提示多行(Swing)

在Java中使所有工具提示多行(Swing),java,swing,tooltip,Java,Swing,Tooltip,我的应用程序中的工具提示可能很长,因此我希望它们有换行符 我不想使用html,因为我更喜欢设置工具提示的(最大)宽度,并动态换行 在接受的答案中,我读到了关于JMultiLineToolTip的类似问题。不幸的是,提供的链接不再起作用,并且存在许多不同的JMultiLineToolTip。因此,我有两个问题: 哪个JMultiLineToolTip是好的使用方法 如何使用这样的类来表示应用程序中的所有工具提示 编辑:似乎每个人都推荐使用html,有没有办法用html定义我的工具提示的宽度(像素或

我的应用程序中的工具提示可能很长,因此我希望它们有换行符

我不想使用html,因为我更喜欢设置工具提示的(最大)宽度,并动态换行

在接受的答案中,我读到了关于
JMultiLineToolTip
的类似问题。不幸的是,提供的链接不再起作用,并且存在许多不同的
JMultiLineToolTip
。因此,我有两个问题:

  • 哪个
    JMultiLineToolTip
    是好的使用方法
  • 如何使用这样的类来表示应用程序中的所有工具提示

  • 编辑:似乎每个人都推荐使用html,有没有办法用html定义我的工具提示的宽度(像素或字符数以外的其他单位)?

    如果您不怕扩展swing工具提示,您可以创建自己的JMultiLineToolTip:

  • 在扩展工具提示组件实现中扩展JTooltip
  • 在customUI实现中设置自定义工具提示UI
  • 实现
    paint()
    方法以多行方式写入给定字符串
  • -它还显示了如何使用它

    但是,要回答您的问题:

  • 哪个JMultiLineToolTip是一个好的工具提示

    使用

  • 如何使用这样的类来表示应用程序中的所有工具提示

    对于每个组件来说,它很容易实现,但很繁琐,因为您必须重写API。但如果您想在全球范围内进行更改,您可以:

    (i) 简单方法-在执行开始时,使用
    UIManager
    注册自定义工具提示UI

    UIManager.put(“工具提示”、“SeNormToolTipUI”)

    UIManager.put(“SeNormToolTipUI”,Class.forName(multilitooltipuiclassname))

    (二)复杂方式

    您必须开始实现自己的外观。在look-and-feel实现中,您将为
    ToolTipUI
    提供默认值作为您的UI实现,然后将该look-and-feel设置为您正在运行的应用程序。例如,请看一看。您可以扩展该部分并在lnf上实现您的

  • 因此,最好使用

    1)
    Html
    是简单的
    JToolTip

    2) 使用
    JWindow
    (未修饰的
    JDialog
    )和
    JTextArea
    ,最好是
    JTextPane
    (支持手写文本)

    • 缺点是您必须手动将窗口设置为
      ,必须手动设置
      setInitialDelay
      setDismissDelay
      (摆动计时器),
      setVisible(真/假)

    • 其优点是,您可以使用完整的可管理顶级容器,并为自己的父容器定义


    3) 我使用
    JLabel
    Html
    格式化和样式化文本添加到
    GlassPane
    ,注意最简单的替代方法是使用非不透明
    JLayeredPane
    (Java6)或
    JLayer
    (Java7)

    我不是说复杂=困难。我的意思是,这是不必要的。