0

Java の ButtonGroup 内に 4 つの JRatioButtons があります。最初の 2 つは有効で、残りの 2 つは無効です。特定の JRatioButton が 1 つ選択されている場合は、無効になっている 2 つの 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

これを試してください、うまくいきます。

AbstractButton button = ...

button.getModel().setEnabled(true/false)
于 2013-01-31T22:39:40.560 に答える
1

2番目のグループのラジオボタンの参照を見つけるのに問題があるのか​​ 、それともラジオボタンを無効にできないのかはわかりません。

最初の質問は簡単です。2 番目のグループのラジオ ボタンの参照を保持するだけです。

2 番目の質問については、JRadioButton をサブクラス化する必要があります。これは、ラジオ ボタンのオブジェクトに対して単純に disable を呼び出すことができないことがわかったためです。

サブクラスのコードサンプルはこのようになります。

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 に答える
0

はい、Enabled(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 に答える