2010-04-26 2 views
0

В наборе переключателей той же группы можно выбрать только одно. Я хотел бы иметь такое же поведение с обычной кнопкой.Общее решение для отмены выбора кнопок в java

Представьте, что есть ряд из трех кнопок. Когда выбрана кнопка, она меняет: but.setSelected (true), а две другие кнопки не должны выбираться: but.setSelected (false)

Теперь, существует ли общее, простое и чистое решение для этого в Java (Свинг)?

ответ

3

JButton расширяет AbstractButton (таким же образом JRadioButton делает) и, следовательно, вы можете использовать же решение как с JRadioButton: Просто добавьте несколько JButton с к ButtonGroup.

Однако обычно этот подход будет неинтуитивным для конечного пользователя, поскольку люди обычно не ожидают, что кнопки останутся «застрявшими»; Именно поэтому существует JRadioButton.

+1

Ваше право, используя это со стандартным JButton, потеряет пользователей, но вы можете захотеть этого поведения с помощью JToggleButton. –

+0

Это хороший момент. Вы должны использовать JToggleButton, чтобы кнопка оставалась нажатой. JRadioButton и JCheckBox - оба подкласса JToggleButton. – Adamski

1

Это специальный компонент для этого - JToggleButton. Это именно то, что вы хотите. Он может использоваться с ButtonGroup в качестве переключателей и флажков (они являются потомками кнопки переключения)

+0

+1 Кроме того, размещение 'JToggleButton' 'в' ButtonGroup' будет производить требуемый одиночный выбор. http://java.sun.com/javase/6/docs/api/javax/swing/ButtonGroup.html – trashgod

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