Как установить пользовательское расположение всплывающей подсказки для заголовка JTable? - PullRequest
1 голос
/ 22 февраля 2020

Как установить местоположение всплывающей подсказки для заголовка JTable? У меня нет проблем с отображением всплывающей подсказки, но я бы хотел разместить ее непосредственно над заголовком столбца, а не по умолчанию (под курсором мыши).

Я могу сделать это успешно для ячеек JTable, переопределив метод getToolTipLocation в классе JTable, но, похоже, он не работает для заголовка таблицы.

Кроме того, класс JTableHeader не поддерживает метод getToolTipLocation. Я уже некоторое время работаю над этим, и любые образцы или идеи будут высоко оценены.

1 Ответ

1 голос
/ 24 февраля 2020

Я был не прав, что JTableHeader не поддерживает getToolTipLocation. Он похоронен в классе JComponent, из которого подкласс JTableHeader. Пример кода, который я предоставил, решает мою проблему. Я реализовал код в классе, который является подклассом из класса JTable. Я все еще использую этот сайт и приношу свои извинения, если пример не кажется законченным.

protected JTableHeader createDefaultTableHeader() {     
    return new JTableHeader(this.columnModel) {
        Point p = null;
        @Override
        public String getToolTipText(MouseEvent e) {
            int colIdx = this.columnAtPoint(e.getPoint());
            Rectangle rect = this.getHeaderRect(colIdx);
            p = rect.getLocation();
            return this.columnModel.getColumn(colIdx).getHeaderValue().toString();
        }

        @Override
        public Point getToolTipLocation(MouseEvent e) {
            return p;
        }
    };
}
...