SWT:以编程方式设置单选按钮

发布于 2024-11-04 19:39:29 字数 184 浏览 0 评论 0原文

当我创建几个单选按钮 (new Button(parent, SWT.RADIO)) 并使用 radioButton5.setSelection(true) 以编程方式设置之前选择的单选按钮时也保持选中状态。我是否必须迭代同一组的所有其他单选按钮才能取消选择它们,或者是否有更简单的替代方案?提前致谢。

When I create a couple of radio buttons (new Button(parent, SWT.RADIO)) and set the selection programmatically using radioButton5.setSelection(true) the previously selected radio button also remains selected. Do I have to iterate over all other radio buttons of the same group to unselect them or is there a simpler alternative? Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

小巷里的女流氓 2024-11-11 19:39:29

不幸的是,您必须迭代所有选项。当您的 UI 第一次出现时,会触发 BN_CLICKED 事件。如果您的 ShellGroup 或任何单选按钮容器不是使用 SWT.NO_RADIO_GROUP 选项创建的,则调用以下方法:

void selectRadio () 
{
    Control [] children = parent._getChildren ();
    for (int i=0; i<children.length; i++) {
        Control child = children [i];
        if (this != child) child.setRadioSelection (false);
    }
    setSelection (true);
}

所以本质上是 eclipse其本身取决于迭代所有单选按钮并切换它们的状态。

每次您手动选择单选按钮时,BN_CLICKED 事件都会被触发,从而自动切换。

当您使用 button.setSelection(boolean) 时,不会触发 BN_CLICKED 事件。因此没有自动切换单选按钮。

检查 org.eclipse.swt.widgets.Button 类以获取更多详细信息。

Unfortunately, you have to iterate over all the options. For the first time when your UI comes up then a BN_CLICKED event is fired. If your Shell or Group or whatever container of radio buttons is not created with SWT.NO_RADIO_GROUP option then the following method is called:

void selectRadio () 
{
    Control [] children = parent._getChildren ();
    for (int i=0; i<children.length; i++) {
        Control child = children [i];
        if (this != child) child.setRadioSelection (false);
    }
    setSelection (true);
}

So essentially eclipse itself depends on iterating over all the radio buttons and toggling their state.

Every time you manually select a Radio Button the BN_CLICKED event is fired and hence the auto toggling.

When you use button.setSelection(boolean) then no BN_CLICKED event is fired. Therefore no automatic toggling of radio buttons.

Check the org.eclipse.swt.widgets.Button class for more details.

我不是你的备胎 2024-11-11 19:39:29

同一组合中的单选按钮将充当一个组。一次只能选择一个单选按钮。这是一个工作示例:

    Composite composite = new Composite(parent, SWT.NONE);

    Button btnCopy = new Button(composite, SWT.RADIO);
    btnCopy.setText("Copy Element");
    btnCopy.setSelection(false);

    Button btnMove = new Button(composite, SWT.RADIO);
    btnMove.setText("Move Element");

The radio buttons within the same composite would act as a group. Only one radio button will be selected at a time. Here is a working example:

    Composite composite = new Composite(parent, SWT.NONE);

    Button btnCopy = new Button(composite, SWT.RADIO);
    btnCopy.setText("Copy Element");
    btnCopy.setSelection(false);

    Button btnMove = new Button(composite, SWT.RADIO);
    btnMove.setText("Move Element");
来世叙缘 2024-11-11 19:39:29

这应该会自动发生。您如何创建按钮?他们是同一个父母吗?父级是否使用 NO_RADIO_GROUP 风格?

This should happen automatically. How are you creating the buttons? Are they on the same parent? Is the parent using NO_RADIO_GROUP style?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文