Я натолкнулся на это, так как он был похож на то, что мне нужно - я хотел вставить всплывающие подсказки для заголовков столбцов. Пример демонстрационного примера Oracle, связанный с camickr включил всплывающие подсказки по дополнительному коду в создании JTable. Этот пример подтолкнул меня в правильном направлении, и я работал над этим так же, но этот способ - инициализировать новый JTable каждый раз, когда таблица была обновлена. Раньше я просто использовал myJTable.setModel() для обновления таблицы. Кроме того, пример Oracle выглядел беспорядочным и немного путался. Мне не нужно было расширять AbstractTableModel, поскольку это не выглядело так, как будто это повлияло на всплывающие подсказки.
Так как я могу получить всплывающие подсказки заголовка столбца, не создавая новый JTable каждый раз и без беспорядка? Критический код в инициализации JTable переопределял метод в JTable-защищенном JTableHeader createDefaultTableHeader(), который, конечно же, позволяет использовать заголовок таблицы (JTableHeader) с всплывающими подсказками. JTableHeader - это то, над чем я действительно хотел работать.
Что я сделал, так это то, что я создал новый класс, который расширил JTableHeader так, чтобы он включал всплывающие подсказки String в конструкторе и метод getToolTipText() (такой же, как в примере, кроме как с контуром String), а затем я сделал myJTable.setTableHeader(), чтобы установить его в экземпляр моего нового класса, который имеет всплывающие подсказки.
(Я отправляю это как ответ, так как он слишком вовлечен для комментария, но может быть полезным для других)
Вот код в моем классе GUI, когда я обновляю table-
myJTable.setModel(new javax.swing.table.DefaultTableModel(
tableData,
colHeader
));//setting the new data and col headers! (no tooltips yet)
MyTableHeader headerWithTooltips = new MyTableHeader(myJTable.getColumnModel(), colHeaderTooltips);//make a new header that allows for tooltips
myJTable.setTableHeader(headerWithTooltips);//use that header in my table
А вот мой MyTableHeader class-
class MyTableHeader extends JTableHeader {
String[] tooltips;
MyTableHeader(TableColumnModel columnModel, String[] columnTooltips) {
super(columnModel);//do everything a normal JTableHeader does
this.tooltips = columnTooltips;//plus extra data
}
public String getToolTipText(MouseEvent e) {
java.awt.Point p = e.getPoint();
int index = columnModel.getColumnIndexAtX(p.x);
int realIndex = columnModel.getColumn(index).getModelIndex();
return this.tooltips[realIndex];
}
}
'getTableCellRendererComponent' возвращает' Component', именно этот компонент, на которые вы хотите установить всплывающую подсказку, внутри 'getTableCellRendererCompon ent' метод – MadProgrammer
Для [пример] (http://stackoverflow.com/questions/15208884/java-is-it-possible-to-put-an-image-and-a-string-in-the-same-jtable -cell/15209900 # 15209900) и [пример] (http://stackoverflow.com/questions/31238676/tooltip-position-for-cell-in-jtable/31238769#31238769) – MadProgrammer
@MadProgrammer, что 2-я ссылка идеальна, спасибо вы! если вы быстро напишете ответ, я приму его. спасибо :) – Aequitas