У меня есть таблица, где каждая строка представляет собой изображение. В столбце Путь я сохраняю его абсолютный путь. Строка, длинная, мне хотелось бы, чтобы при наведении указателя мыши на определенную ячейку всплывающая подсказка должна появляться рядом с мышью, содержащей информацию из ячейки.
Как добавить всплывающую подсказку в ячейку в jtable?
Ответ 1
Я предполагаю, что вы не создали пользовательский CellRenderer
для пути, но просто используйте DefaultTableCellRenderer
. Вы должны подклассифицировать DefaultTableCellRenderer
и установить всплывающую подсказку в getTableCellRendererComponent
. Затем установите рендерер для столбца.
class PathCellRenderer extends DefaultTableCellRenderer {
public Component getTableCellRendererComponent(
JTable table, Object value,
boolean isSelected, boolean hasFocus,
int row, int column) {
JLabel c = (JLabel)super.getTableCellRendererComponent( // params from above );
// This...
String pathValue = <getYourPathValue>; // Could be value.toString()
c.setToolTipText(pathValue);
// ...OR this probably works in your case:
c.setToolTipText(c.getText());
return c;
}
}
...
pathColumn.setCellRenderer(new PathCellRenderer()); // If your path is of specific class (e.g. java.io.File) you could set the renderer for that type
...
Ответ 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 {
tip = getValueAt(rowIndex, colIndex).toString();
} catch (RuntimeException e1) {
//catch null pointer exception if mouse is over an empty line
}
return tip;
}
};
Ответ 3
Вы говорите, что сохраняете абсолютный путь в ячейке. Вероятно, вы используете JLabel
для установки абсолютной строки пути. Предположим, у вас есть ярлык в вашей ячейке, используйте теги html для выражения содержимого подсказки:
JLabel label = new JLabel("Bla bla");
label.setToolTipText("<html><p>information about cell</p></html>");
setToolTipText()
может использоваться для некоторых других компонентов Swing, если вы используете что-то другое, кроме JLabel.