Существует ли реализация «составного пункта меню» на Java / Swing, как в Chrome?

#java #swing #button #menu

#java #swing #кнопка #меню

Вопрос:

Прежде всего, существует ли «официальное» название для таких пунктов меню, как Edit и Zoom в браузере Chrome?

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

Существует ли существующая реализация Swing?

На первый взгляд это может быть еще одна вещь типа «я могу сделать это в выходные», но заставить кнопку хорошо выглядеть для всех LAFs было бы сложно, как всегда, поскольку кнопка по умолчанию, очевидно, слишком «квадратная» для этих «встроенных» кнопок (и «spinner lite» для масштабирования). И правильное выравнивание текста / ускорителя может быть практически невозможным.

Комментарии:

1. Браузер Chrome? О каких элементах вы говорите? Создание кнопок, которые работают со всеми LAFS, не должно быть проблемой. Можете ли вы расширить свой вопрос?

2. Смотрите также, как написать пользовательский компонент Swing .

3. @jzd: да, браузер. Вопрос обновлен. Я спрашиваю, выполнил ли кто-нибудь уже работу (напишите пользовательский JMenuItem), которую я слишком ленив, чтобы делать.

Ответ №1:

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

Однако, если вы хотите, чтобы что-то выглядело определенным образом, вам нужно будет создать пользовательский компонент, который, возможно, использует цвета по умолчанию для меню или кнопки или предустановленные значения.

Комментарии:

1. Он говорил о том, что кнопки, предоставляемые LAF, предназначены для того, чтобы хорошо выглядеть на поверхности диалогового окна, а не на пункте меню.

2. @Random832: спасибо, что высказали мое мнение. Да, легко заменить границу кнопки по умолчанию, но все еще нетривиально (например, закругленные углы только для первой и последней кнопок), и вам могут понадобиться немного другие границы для разных LAF (я не знаю, как Chrome выглядит на других ОС, кроме Windows XP).

Ответ №2:

Здесь есть частичная реализация Swing:

http://code.google.com/p/jbuttonmenuitem/

Он может обрабатывать пункты меню редактирования, но, вероятно, не масштабирование.