首页 > 解决方案 > 第一个按钮(收音机)始终打开

问题描述

我正在建立一个两支球队交手的比赛计分系统。每手牌都有一个赢家,但是在打完手之前,赢家是未知的。我通过单击单选按钮显示谁获胜。如果一个团队的单选按钮被“点击”,那么我以编程方式“取消点击”另一个按钮。我只在下面展示了一只手,但你可以有不止一只手,它们被添加到第一只手的下方(以编程方式添加另一个复合b及其组)。

注意:第二只手和后续手确实在创建时关闭了两个单选按钮。

问题是创建的第一个单选按钮(左组)始终处于选中状态,我无法将其关闭。如果我点击右侧面板中的获胜者,那么我可以在程序控制下关闭左侧面板中的获胜者,反之亦然。

但是我不能在两个按钮都关闭的情况下开始。

后台某处的 SWT 似乎打开了表单中创建的第一个单选按钮,并且不会让它关闭,除非表单中其他位置的另一个单选按钮已打开,无论分层或单选分组如何。我通过打开表单中的最后一个单选按钮对此进行了测试,果然我可以关闭第一个单选按钮。

所有单选按钮的创建代码/组是使用以下内容创建的SWT.NO_RADIO_GROUP

ivWinHandRadio = new Button( group, SWT.RADIO | SWT.RIGHT );
ivWinHandRadio.setText( "Winner!" );

开关代码是

void setWinOff()
{
   ivWinHandRadio.setSelection( false );
   ivWinHandRadio.notifyListeners( SWT.Selection, new Event() );
}

我将 SWT 分层为:

a|------------------------------------------------|
b||----------------------------------------------||
c|||=====================||=====================|||
d||| ( ) Winner!         ||   ( ) Winner!       |||
 |||                     ||                     |||
 |||=====================||=====================|||
 ||----------------------------------------------||
 |------------------------------------------------|

创建单选按钮时如何关闭它们?在牌局开始之前将左侧显示为赢家是不好的。

注意:我可以打开表单中的最后一个单选按钮,然后关闭第一个按钮。然后在第一个单选按钮上单击我可以关闭最后一个单选按钮,从而解决这个问题。我已经对此进行了测试。呸!

标签: javaswt

解决方案


推荐阅读