Прямоугольные кнопки Java Swing Radio?

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

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

Другой альтернативой может быть добавление JButton в ButtonGroup, возможно, установка JToggleButton.ToggleButtonModel в качестве модели, но это не имеет желаемого эффект, поскольку код рисования для стандартной кнопки JButton не удерживает ее нажатой при выборе. Возможно, для этого можно изменить код JButton. Это как если бы он рисовал «выбранным» так же, как «нажата».

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

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

5
задан Rom1 2 June 2011 в 09:38
поделиться