Как добавить всплывающие подсказки в строки JTable - PullRequest
7 голосов
/ 30 ноября 2011

как добавить подсказки к строкам 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 ]

14 голосов
/ 01 декабря 2011

добавляет подсказку для каждой отдельной ячейки в строке, а не одну подсказку для всей строки

Вы меняете подсказку в зависимости от строки и столбца.Если вы хотите, чтобы всплывающая подсказка изменялась только по строке, тогда я бы только проверял значение строки и забывал о значении столбца.

Другой способ задать всплывающую подсказку - переопределить метод getToolTipText(MouseEvent) в JTable.Затем вы можете использовать метод rowAtPoint(...) таблицы, чтобы получить строку, а затем вернуть соответствующую подсказку для строки.

5 голосов
/ 22 января 2014

Просто используйте приведенный ниже код при создании объекта 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 голосов
/ 01 декабря 2011

см. JComponent.setToolTipText() - JComponent, который вам нужен для данных на строку, - это не таблица, а скорее средство визуализации данных, которое имеет доступ к настройке JComponent для каждой представленной ячейки.

0 голосов
/ 29 марта 2014

rowIndex может быть НОЛЬ.

изменить:

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

на:

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