Кнопки панели инструментов Swing

Я добавляю панель инструментов в свое приложение, и в настоящее время я добавляю несколько кнопок-переключателей на панель инструментов. Мне не нравится использовать JButton по умолчанию, потому что он большой и неуклюжий (даже если я удалю поля). Существуют ли какие-либо библиотеки для простого создания панелей инструментов и кнопок панели инструментов, которые выглядят более естественно? В частности, я бы хотел, чтобы кнопки выглядели плоскими, пока пользователь не наведет на них курсор или они не будут выбраны (как в Eclipse).

спасибо, Джефф


person Jeff Storey    schedule 26.02.2010    source источник


Ответы (1)


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

Панель инструментов создаст соответствующий JButton, который выглядит правильно.

Кроме того, установите toolbar.setRollover(true), что сделает все кнопки плоскими, за исключением случаев, когда мышь находится над ними.

О, и если вы не хотите, чтобы он был плавающим, установите toolbar.setFloatable(true).

Эти три вещи, и с правильным L&F, панель инструментов обычно выглядит очень профессионально

Вообще говоря, мы не должны сами возиться с полями кнопок, если только мы не пытаемся сделать что-то очень индивидуальное.

person Reverend Gonzo    schedule 26.02.2010
comment
Думаю, я не пробовал, потому что API говорит, что это не предпочтительный способ сделать это. Однако, если мне нужны кнопки-переключатели, мне нужно будет написать пользовательскую группу действий (аналогично группе кнопок, за исключением действий)? - person Jeff Storey; 26.02.2010
comment
Если вы используете Java 6+, вам не нужно ничего писать. Стандартное действие сработает. Прочтите о свойстве выбранного компонента Action на странице java.sun.com. /javase/6/docs/api/javax/swing/Action.html - person Eugene Ryzhikov; 26.02.2010
comment
Истинный. Часть, которую я упустил, заключается в том, что мне нужно, чтобы они были взаимоисключающими. Хотя этот код не должен быть сложным в написании. Спасибо. - person Jeff Storey; 26.02.2010
comment
Функция JToolbar.add(Action) возвращает JButton, созданный ею внутри. Так что это вопрос добавления этих кнопок в ButtonGroup. - person Eugene Ryzhikov; 27.02.2010
comment
Что бы это ни стоило, на этом веб-сайте говорится, что JToolBar.add(action) больше не рекомендуется. dil.univ-mrs.fr/~ garreta/docJava/tutorial/uiswing/components/ — прокрутите вниз до API панели инструментов. - person Nemi; 01.03.2010