JToggleButton. Один выбран, другие не выбраны

Итак, у меня есть три кнопки, скажем, 1, 2 и 3. Я хочу, когда я нажимаю кнопку 1, кнопку 2 и кнопку 3 снимать. После этого, когда я нажимаю кнопку 2, я хочу, чтобы кнопка 1 и кнопка 3 были отменены. То же самое для кнопки 3.

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

if(smallbuttonpage1.isSelected()){
    normalbuttonpage1.setSelected(false);
    bigbuttonpage1.setSelected(false);
    textpage1.setFont(new Font("ComicSansMS", Font.PLAIN, 8));
}
if(normalbuttonpage1.isSelected()){
    smallbuttonpage1.setSelected(false);
    bigbuttonpage1.setSelected(false);
    textpage1.setFont(new Font("ComicSansMS", Font.PLAIN, 12));
}
if(bigbuttonpage1.isSelected()){
    smallbuttonpage1.setSelected(false);
    normalbuttonpage1.setSelected(false);
    textpage1.setFont(new Font("ComicSansMS", Font.PLAIN, 20));
}

person MrSilent    schedule 06.01.2014    source источник
comment
Можете ли вы описать, что означает застревание, что именно идет не так? я бы также рекомендовал JRadioButton в группе кнопок для этого.   -  person Neil Locketz    schedule 07.01.2014
comment
Застрял, как и в случае, когда я нажимаю кнопку 2, когда выбрана кнопка 1, кнопка 1 не isSelected (false).   -  person MrSilent    schedule 07.01.2014


Ответы (2)


Вы просто добавляете все кнопки во вновь созданный файл ButtonGroup. Это автоматически позаботится об отмене выбора других кнопок.

Ознакомьтесь с руководством по Swing: http://docs.oracle.com/javase/tutorial/uiswing/components/button.html#radiobutton

person Hauke Ingmar Schmidt    schedule 06.01.2014

Я понял это в конце концов. Я использовал hasFocus() вместо isSelected(), и он отлично работает, надеюсь, кому-нибудь поможет в будущем.

person MrSilent    schedule 06.01.2014
comment
Нет, не надо. Это ужасная идея. У вас нет возможности гарантировать, что фокус останется с кнопкой, также у вас нет возможности проверить результат в будущем... - person MadProgrammer; 07.01.2014