如何向JTable的行添加工具提示

时间:2011-11-30 19:59:09

标签: java swing jtable tooltip

如何将工具提示添加到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;
}

4 个答案:

答案 0 :(得分:14)

  

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

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

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

答案 1 :(得分:5)

在创建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;
            }
        };

答案 2 :(得分:2)

请参阅JComponent.setToolTipText() - 每行数据所需的JComponent 表,而是数据的单元格渲染器,可以访问为每个数据配置JComponent渲染细胞。

答案 3 :(得分:0)

rowIndex可以是ZERO。

变化:

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

由:

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