代码之家  ›  专栏  ›  技术社区  ›  Marv

JFace TableViewer:在列展开时截断并展开ColumnLabelProvider文本

  •  0
  • Marv  · 技术社区  · 8 年前

    我有一个JFace TableViewer,有5列。一列中可能有一个长字符串。通过调用 getText(Object element) 方法

    当前,文本在字符串的末尾被截断为列宽,并以“…”结尾,当用户调整列宽的大小时,会向文本中添加字符。

    我希望有这种行为,但在文本字符串的中间有“…”,这样用户就可以看到文本的第一部分和文本的结尾,无论当前设置的列大小如何。

    例如,“我的列当前截断” this is a long piece of text larger than the column width " 到 " this is a long piece of text larger... "

    我想展示一下

    " this is a long piece ... column width " 而且当列宽扩大时,文本从中间展开,当列宽缩小时,文本再次收缩。

    关于如何在RCP E4应用程序中使用Jface Tableviewer实现这一点,有什么想法吗?

    如果我可以重写现有的方法,即截断文本字符串末尾的文本,那就太好了。

    1 回复  |  直到 8 年前
        1
  •  0
  •   Marv    7 年前

    最后,我必须在列标签提供程序中创建一个方法,该方法获取全文和列宽-测量列的当前宽度,获取标签提供程序的文本长度,并根据列的宽度将其拆分。随着列的扩展,子串1和子串2增长。将子字符串1放在头部,子字符串2放在尾部,省略号在中间。它远不是高效的代码,但它符合我们的目的。我向列添加了一个ControlListener,并执行了@Override of controlResized(ControlEvent e)方法,该方法将在调整列大小时刷新列所在的查看器。

    推荐文章