JTable单元 - 处理长文本

时间:2011-05-10 15:30:22

标签: java swing user-interface jtable

我有一个JTable,其中一列偶尔会有相当数量的文本。我们使用一些算法将每行的高度扩展到最高的单元格。问题是长文本单元格我们得到“胖”行。

它看起来像这样:

=============================
| Col1 | Col2 | This is some|
|      |      | very long   |
|      |      | text!       |
=============================

我考虑了几个解决方案:

  • 剪切文本并添加鼠标侦听器以“展开”剪切的文本
  • 剪切文本并添加工具提示或对话框以显示额外内容

有没有人知道任何修复此问题的库?我愿意使用其他一些技术......我不相信我的解决方案是最好的。

提前致谢!

2 个答案:

答案 0 :(得分:5)

我只想使用工具提示。

您可以覆盖JTable的getToolTipText(()方法来执行此操作。

JTable table = new JTable(...)
{
    public String getToolTipText( MouseEvent e )
    {
        int row = rowAtPoint( e.getPoint() );
        int column = columnAtPoint( e.getPoint() );

        Object value = getValueAt(row, column);
        return value == null ? null : value.toString();
    }
};

或者如果仅针对某些列,则可以使用渲染器设置工具提示文本。请参阅Specifying Tool Tips for Cells

答案 1 :(得分:0)

我花了一些时间来了解如何在Netbeans上显示工具提示,但您的回答非常有帮助。 这里是在netbeans GUI Builder上实现的...... 右键单击您的Jtable->自定义代码。 选择“自定义创建”所在的新“javax.swing.JTable();”代码是在半冒号之前;添加以下答案的代码......看起来像这样:

YourTable = new javax.swing.JTable(){
    //add tooltip to display the full cell text when not displayed
    public String getToolTipText( MouseEvent e )
    {
        int row = rowAtPoint( e.getPoint() );
        int column = columnAtPoint( e.getPoint() );

        Object value = getValueAt(row, column);
        return value == null ? null : value.toString();
    }
}
;