【问题标题】:How to add tooltips to JTable's rows如何向 JTable 的行添加工具提示
【发布时间】:2011-11-30 19:59:08
【问题描述】:

如何将工具提示添加到 JTable 的行 (Java Swing)? 这些工具提示应包含相关行的相同值。

这是我在课堂上使用的扩展 JTable 的代码。它覆盖了“prepareRenderer”方法,但我得到了空单元格,并且它为行中的每个单元格添加了一个工具提示,而不是为整行添加一个工具提示(这就是我正在寻找的):

public Component prepareRenderer(TableCellRenderer renderer,int row, int col) {
    Component comp = super.prepareRenderer(renderer, row, col);
    JComponent jcomp = (JComponent)comp;
    if (comp == jcomp) {
        jcomp.setToolTipText((String)getValueAt(row, col));
    }
    return comp;
}

【问题讨论】:

  • 你需要comp和jcomp的比较吗?我认为它要么永远有效,要么永远无效......
  • “相对行的相同值”是什么意思?

标签: java swing jtable tooltip


【解决方案1】:

它为行中的每个单元格添加一个工具提示,而不是为整行添加一个工具提示

您正在根据行和列更改工具提示。如果您只希望工具提示按行更改,那么我只会检查行值而忘记列值。

另一种设置工具提示的方法是覆盖JTable 的getToolTipText(MouseEvent) 方法。然后可以使用表格的rowAtPoint(...)方法获取行,然后为行返回相应的工具提示。

【讨论】:

  • 谢谢它几乎是完美的!唯一缺少的是工具提示现在持续几秒钟。我想让它一直显示,直到鼠标指针移开。这可能吗?
  • 这由ToolTipManager 控制。您可以更改关闭值。
【解决方案2】:

在创建 JTable 对象时使用下面的代码。

JTable auditTable = new JTable(){

            //Implement table cell tool tips.           
            public String getToolTipText(MouseEvent e) {
                String tip = null;
                java.awt.Point p = e.getPoint();
                int rowIndex = rowAtPoint(p);
                int colIndex = columnAtPoint(p);

                try {
                    //comment row, exclude heading
                    if(rowIndex != 0){
                      tip = getValueAt(rowIndex, colIndex).toString();
                    }
                } catch (RuntimeException e1) {
                    //catch null pointer exception if mouse is over an empty line
                }

                return tip;
            }
        };

【讨论】:

    【解决方案3】:

    参见JComponent.setToolTipText() -- 您希望在每行数据上的 JComponent 不是表格,而是数据的单元格渲染器,它可以为每个渲染的单元格配置 JComponent .

    【讨论】:

    • 感谢您的回答。我已经用更多信息编辑了我的问题。
    【解决方案4】:

    rowIndex 可以为零。

    改变:

    if(rowIndex != 0){
       tip = getValueAt(rowIndex, colIndex).toString();
    }
    

    作者:

    if(rowIndex >= 0){
       tip = getValueAt(rowIndex, colIndex).toString();
    }
    

    【讨论】:

      猜你喜欢
      • 2012-03-17
      • 2010-11-23
      • 1970-01-01
      • 1970-01-01
      • 2011-10-30
      • 2019-08-14
      • 2023-04-04
      • 2017-02-24
      • 2015-07-16
      相关资源
      最近更新 更多