2009-08-15 5 views
1

Можно ли разместить дочерний компонент внутри JButton и сделать его прозрачным для подмножества событий мыши, так что:Добавление дочернего элемента к JButton

  • Компонент ребенок получает MouseMotionEvent с (так он может реагировать на изменения отображаемого изображения)
  • щелкнув по-прежнему угнетает JButton «за» детского компонентом

Если вы добавляете компонент ребенка к кнопке, но не делаете никаких других изменений, нажав кнопку в области O занятый ребенком, не активирует кнопку.

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

Примечание: это чисто по косметическим соображениям. Детский компонент меняет свой внешний вид. Он не выполняет никаких других действий в ответ на клики. Существует только один Action, запускаемый кнопкой в ​​обычном режиме.

ответ

1

Да, возможно, но, возможно, есть более эффективные способы изменить внешний вид JButton на мыши. Вы можете расширить ButtonUI, чтобы сделать это. Однако, если вы хотите удалить компонент через JButton, вы должны передать другие события мыши (например, щелчки) в базовый JButton.

+0

Я использовал SwingUtilities.convertMouseEvent для передачи нежелательных событий на кнопку, что дает желаемый эффект. – finnw

0

JXLayer - это то, что вам нужно. Отъезд https://jxlayer.dev.java.net/ На сайте проекта есть несколько хороших статей об использовании JXLayer для разных случаев использования.

Смежные вопросы