0

我在 Java 的 ButtonGroup 中有四个 JRatioButtons。前两个是启用的,另外两个是禁用的。如果选择了一个特定的 JRatioButton,我需要启用两个禁用的 JRatioButton。

我试图用这个来查找按钮的状态并启用禁用的按钮,显然我找到了那些处于禁用状态但没有改变该状态的按钮。

private void activateButtons() {
    Enumeration<AbstractButton> elements = myButtonGroup.getElements();
    while (elements.hasMoreElements()) {
          AbstractButton button = (AbstractButton)elements.nextElement();
          if (button.isEnabled()) {
            System.out.println("This button is disabled! The text of the button is: '" + button.getText() + "'");
            button.setEnabled(true);
          }
    }
}

我得到了禁用按钮的文本,但我无法禁用它们。

有什么帮助吗?谢谢!

4

3 回答 3

1

我不知道您在查找第二组单选按钮的引用时是否有任何问题,或者您只是无法禁用单选按钮。

对于第一个问题,很简单,您只需保留第二组中单选按钮的引用即可。

对于第二个问题,您需要将 JRadioButton 子类化,因为我发现您不能简单地为单选按钮对象调用禁用。

子类的代码示例是这样的。

this.editable = editable;
if (editable) {
    this.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
    super.enableEvents(Event.MOUSE_DOWN | Event.MOUSE_UP);
} else {
    this.setCursor(CursorFactory.createUnavailableCursor());
    super.disableEvents(Event.MOUSE_DOWN | Event.MOUSE_UP);
}
于 2012-10-24T00:50:32.340 回答
1

试试这个,它有效。

AbstractButton button = ...

button.getModel().setEnabled(true/false)
于 2013-01-31T22:39:40.560 回答
0

是的,您setEnabled(true)为启用的RadioButton。
所以在这里编辑,希望可以帮助某人。

private void activateButtons() 
{
    Enumeration<AbstractButton> elements = myButtonGroup.getElements();
    while (elements.hasMoreElements()) 
    {
          AbstractButton button = (AbstractButton)elements.nextElement();
          if (button.isEnabled())     // if enabled (true) 
          {
            System.out.println("This button is disabled! The text of the button is: '" + button.getText() + "'");
            button.setEnabled(false); // set it disabled (false)
          }
    }
}

谢谢@Hannibal,你的帖子拯救了我的一天。

于 2014-05-09T17:11:46.487 回答