Я не знаю, как заставить мои всплывающие подсказки работать

Поэтому я прочитал несколько веток, в которых работали подсказки, и попытался отработать это безрезультатно.

import java.awt.event.MouseEvent;

public String getToolTipText(MouseEvent e) {
    String tip = "tommy likes trucks";
    java.awt.Point p = e.getPoint();
    int rowIndex = FursJTable.rowAtPoint(p);
    int colIndex = FursJTable.columnAtPoint(p);
    int realColumnIndex = FursJTable.convertColumnIndexToModel(colIndex);
    //if (description[realColumnIndex] = null || description[realColumnIndex] = "") {
    //    tip = null;
    //} else {
    //    tip = description[realColumnIndex];
    //}
    return tip;
}

Оператор if должен просто извлечь строку из массива, который я настрою, но даже если я просто установлю подсказку в начале кода, он не отобразит всплывающую подсказку в моей jtable. Вся помощь приветствуется.:)

Мне также нужна всплывающая подсказка по всему ряду. но это все еще не имеет значения, потому что я не могу заставить всплывающую подсказку появляться где-либо.

1 ответ

int rowIndex = FursJTable.rowAtPoint(p);
int colIndex = FursJTable.columnAtPoint(p);
int realColumnIndex = FursJTable.convertColumnIndexToModel(colIndex);

Метод getToolTipText(...) является частью JTable. Поскольку вы переопределяете код в JTable, вам не нужно ссылаться на переменную экземпляра. Просто используйте:

int rowIndex = rowAtPoint(p);
int colIndex = columnAtPoint(p);
int realColumnIndex = convertColumnIndexToModel(colIndex);

Кроме того, следуйте соглашениям об именах Java. Имена переменных НЕ должны начинаться с символа верхнего регистра.

Если вам нужна дополнительная помощь, тогда опубликуйте правильный SSCCE, который демонстрирует проблему.

Редактировать:

Один из способов расширить компонент для переопределения одного метода - сделать что-то вроде:

JTable table = new JTable( ... )
{
    public String getToolTipText( MouseEvent e )
    {
        return "hello";
    }
};
Другие вопросы по тегам