【问题标题】:JTable Cells - Handling Long TextJTable 单元格 - 处理长文本
【发布时间】:2011-08-22 14:13:02
【问题描述】:

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

看起来像这样:

============================== | Col1 | Col2 |这是一些| | | |很长| | | |文本! | ==============================

我考虑了几个解决方案:

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

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

提前致谢!

【问题讨论】:

    标签: java swing user-interface jtable


    【解决方案1】:

    我只会使用工具提示。

    您可以覆盖 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

    【讨论】:

    • 我对这种技术的唯一担心是它使复制表格内容更加令人沮丧。如果 Swing 有像 Eclipse 那样的“可锁定”工具提示(我不知道它们叫什么),那就太好了(例如,当您将鼠标悬停在 javadoc 上时)。
    • 我不确定复制问题是什么。无论如何,表格都不支持复制单元格的一部分。因此,即使对于完全可见的文本,您也不能只选择和复制几个字符。您的问题不是关于从单元格中复制文本。如果这是您的真正要求,那么是的,您需要显示某种自定义弹出窗口,该窗口在文本组件中显示与渲染器相反的文本,以便您可以选择和复制文本。
    • 很公平,我也没有意识到复制行与模型的关系比渲染的单元格更重要——我对挥杆概念有点生疏了,抱歉。
    【解决方案2】:

    我花了一段时间才知道如何在 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();
        }
    }
    ;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-20
      • 2016-06-26
      • 1970-01-01
      • 1970-01-01
      • 2012-10-03
      • 2016-07-11
      相关资源
      最近更新 更多