Как получить координаты заголовка вкладки в jTabbedPane?

У меня есть метод, который рисует анимированное изображение на стекле, чтобы имитировать пульсацию значка. Ему нужно изображение (я использую значки компонентов) и границы (например, кнопки). Мне нужна эта область:

введите здесь описание изображения

Я знаю, что у этой кнопки есть getBounds(), есть ли что-то подобное на вкладках? Или, может быть, координаты значка. Либо было бы неплохо.


person bunnyjesse112    schedule 28.12.2011    source источник
comment
Вы должны сказать нам, почему вам нужны эти координаты. Что вы планируете с ними делать? Возможно, есть лучшее решение, чем то, о котором вы думаете.   -  person JB Nizet    schedule 28.12.2011
comment
я отредактировал свой пост. Спасибо заранее!   -  person bunnyjesse112    schedule 28.12.2011
comment
Я знаю, что опаздываю с этим, но @bunnyjesse112, пожалуйста, подумайте о том, чтобы принять ответ Кшиштофа на благо будущих читателей.   -  person Loduwijk    schedule 11.05.2017


Ответы (4)


Вы должны создать собственный BasicTabbedPaneUI, потому что эти методы защищены и нет возможности переопределить эти методы извне (которые пришли из Стандартный Java API)

person mKorbel    schedule 28.12.2011
comment
Спасибо за ответ. Не могли бы вы привести небольшой пример? Или как называются методы, которые мне нужно переопределить в моем BasicTabbedPaneUI? - person bunnyjesse112; 28.12.2011
comment
ты имеешь в виду это? java2s.com/Code/Java/Swing-Components/ - person bunnyjesse112; 28.12.2011
comment
1) хммм изменено на google.com/, извините, реализованный squid не позволяет мне открывать эти ссылки, 2) возможно, лучший обходной путь автор: aephyr aephyr.googlecode.com/svn/trunk - person mKorbel; 28.12.2011
comment
Я не понимаю. Что такое эфир? Где обходной путь? Я умственно отсталый, пожалуйста, объясните подробнее! - person bunnyjesse112; 28.12.2011
comment
Вы можете создать свой собственный класс пользовательского интерфейса, но это не обязательно. Ответ Кшиштофа спустя два года должен быть доведен до верха. Извинения; проголосовали против просто для того, чтобы получить более высокий балл за другой ответ. - person Loduwijk; 11.05.2017

У меня была аналогичная проблема. Мне нужна была высота вкладки. int tabHeight = myTabPanel.getUI().getTabBounds(myTabPanel, 0).height;.

person Krzysztof Szewczyk    schedule 21.08.2013

@mKorbel прав насчет делегата пользовательского интерфейса, но усилия огромны. В качестве альтернативы вы можете использовать анимированный значок, показанный здесь, или настраиваемый компонент вкладки, на который ссылается здесь.

person trashgod    schedule 28.12.2011

Я знаю, что у этой кнопки есть getBounds(), есть ли что-то подобное у вкладок?

См. getTabBounds() метод BasicTabbedPaneUI. Вам не нужно настраивать класс только для того, чтобы получить эти данные. Вам нужно только настроить пользовательский интерфейс, если вы собираетесь делать анимацию в пользовательском интерфейсе.

Проблема в том, что размер вкладки будет просто размером текста. Таким образом, у вас не будет пустого места для значка, если вы не добавите пустой значок на вкладку. Если вы собираетесь это сделать, вы можете использовать анимированный значок. класс, который позволяет комбинировать значки для выполнения анимации.

person camickr    schedule 28.12.2011