2015-02-25 5 views
2

Вот изображение моего приложения:Получить Местонахождение JTable Заголовок в JFrame

enter image description here

Как вы можете видеть, есть JTable там. Мне нужно получить расположение заголовков JTable относительно JFrame, в котором он находится.

Почему я могу это делать? Я добавляю функцию справки, которая объясняет, что для каждого столбца таблицы. Он помещает внимание на каждый столбец. Это выглядит следующим образом:

enter image description here

Как вы можете видеть, место, где в центре внимания показывает выключен.

Чтобы получить место, я получаю Rectangle заголовка столбца с помощью:

getTable().getTableHeader().getHeaderRect(i); 

Чтобы преобразовать эту Rectangle в нужное место в JFrame, я использую:

Point point = SwingUtilities.convertPoint(
       component, //the containing JPanel 
       rectangle.getLocation(), //the rectangle for the table column header 
       frame.getGlassPane()); //the containing JFrame 

Может кто-то Помогите мне получить правильное расположение заголовка столбца?

+0

читать Oracle учебник - как использовать таблицы, часть о подсказке, а в сторону GlassPane косяк охватывает площадь целые RootPanes, положить JLabel в Glasspane, я уверен, что смешно Вариант Как создать телескоп в Swing by @Andrew Thompson здесь несколько раз здесь – mKorbel

+0

слишком много границ для этого вида – mKorbel

ответ

2

Я думаю, что нужно использовать таблицу в качестве исходного компонента:

Point point = SwingUtilities.convertPoint(
      getTable(), //the table as reference 
      rectangle.getLocation(), //the rectangle for the table column header 
      frame.getGlassPane()); //the containing JFrame 
+0

Спасибо, пожалуйста, см. мой ответ – user489041

1

Я понял это. Это была комбинация из двух вопросов. Во-первых, благодаря Ули за его ответ. Передача в таблице - правильный ход. Во-вторых, я вычислял прямоугольник, когда таблица не была видна на экране. Это вызвало неправильные координаты.

Я переключил его, чтобы получить Rectangle, как только таблица будет показана, и это правильно.

0

Я не являюсь Java-espert, но только вчера я читал документацию Oracle и, видимо, есть методы, которые позаботятся об этом уже (getToolTipText (MouseEvent)). Также они предлагают альтернативный метод отображения справки в заголовках JTable на основе содержимого. Я рекомендую вам взглянуть на это:

http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#data