2012-02-05 3 views
8

Есть ли стандартная реализация или библиотека, которая предоставляет переключатель GUI в Swing? Я знаю, что Swing обеспечивает переключатель , но UX оставляет желать лучшего. Я ищу это:Есть ли стандартный коммутатор GUI в Java?

enter image description here

Кроме того, существует канонический термин для этого типа управления? Apple HIG ссылается на него как на UISwitch. Я также попытался найти «тумблер», но мне не повезло. (Множество результатов JavaScript, но ничего родного.)

+0

Связанные примеры можно найти [здесь] (HTTP : //stackoverflow.com/a/5528653/230513) и [здесь] (http://stackoverflow.com/a/6036048/230513). – trashgod

ответ

8

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

В отличие от пользователей, пользователи хотят видеть логические и последовательные графические интерфейсы, которые представляют собой «путь наименее неожиданного», разработчики считают, что пользователям нужен «красивый, умный» графический интерфейс (и что они могут его спроектировать). Зачем же им нужен такой контроль над стандартной кнопочной кнопкой?

+4

Кнопка переключения, подобная той, которая имитирует реальный физический коммутатор, при условии, что пользователь знает, чего ожидать, когда они будут взаимодействовать с ним, будет минимальная неожиданность. +1 для 'JToggleButton', это более простой способ сделать это и сэкономить время, не переделывая его. – rtheunissen

+0

Кажется, что Apple нравится идея: http://goo.gl/EhyDm – rtheunissen

+0

@ paranoid-android До тех пор, пока это нормальный компонент ОС, это уже не путь наименьшего удивления. OTOH Я утверждаю, что это всего лишь один способ (и не обязательно лучший) представлять «переключаемый переключатель». Кнопка переключения или флажок - это два других способа. –

3

Свинг не имеет стандартного переключателя, как тот, который вы описали. Лучше всего, если вы не найдете третьего лица, просто напишите. То, как я бы подойти к нему было бы просто структура, как это:

JLabel
• Override paintComponent
• Проверьте наличие состояния с чем-то вроде isOn()
• Добавить MouseListener для переключения состояния.
• Пользовательская окраска учитывает значения и размеры меток.

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

+0

Реализация 'Icon' также является удобным способом изменения внешнего вида. – trashgod

5

Я не знаю, из стандартного, но Gerrit Grunwald, который создает компоненты серии Steel создали реализацию этого, что он называет Steel Checkbox

Steel checkbox

+0

Блог Gerrit - отличный ресурс. Благодаря! – cbednarski