2010-12-06 3 views
0

Я работаю над проектом. Я хочу добавить панель инструментов в программное обеспечение, поэтому я помещаю несколько кнопок в панель. Однако стиль кнопки по умолчанию не соответствует моей потребности. Я хочу, чтобы кнопка имела следующие эффекты:Настроить стиль JButton

  1. Когда мышь не нависает над кнопкой, кнопка должна выглядеть как JLabel. Значок на кнопке просто выглядит как изображение на панели, т. Е. Все, что мы видим, это значок в кнопке, а другие вещи прозрачны.
  2. Когда мышь нависает над кнопкой, появляется рамка кнопки. Это похоже на настоящую кнопку.

Пример: точно так же, как кнопки на панели инструментов затмения.

ответ

1

Итак, вы хотите настроить рендеринг JButton?

Во-первых, для всеобъемлющего решения вы можете взглянуть на существующий LnF, например Substance (очевидно, это слишком мощное решение для ваших нужд, однако это может дать вам некоторое вдохновение).

Затем, если вы хотите решить это самостоятельно, вам придется переопределить метод paintComponent.

Для этого первым шагом является подкласс JButton.

Затем, в вашем подклассе, начните с переопределения метода paintComponent(Graphics).

Обратите внимание, что если все это сложнее, вы можете также взглянуть на метод setBorderPainted(boolean).

1

Продлить JButton и:

  • Просто добавьте значок вместо текста на кнопку.
  • Добавить MouseMotionListener для захвата зависание, чтобы показать/скрыть границу.
3

Почему не use a JToolbar вместо JPanel?

+1

+1, ОП говорит, что ему нужна панель инструментов. Не изобретайте велосипед и не используйте стандартный компонент панели инструментов. – camickr 2010-12-06 16:17:45

1

У меня есть. Ответ на мой вопрос - метод setContentAreaFilled(). Когда мышь нависает над кнопкой, вызовите setContentAreaFilled (true). В противном случае вызовите setContentAreaFilled (false). Вот относительный код: link text

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