2012-10-24 59 views
0

我在Java中的ButtonGroup中有四個JRatioButton。兩個第一個被啓用,另外兩個被禁用。如果選擇了一個特定的JRatioButton,我需要啓用兩個禁用的JRatioButton。如何在Java中的ButtonGroup中禁用JRadioButton

我試圖找到按鈕的狀態,並啓用禁用的狀態,顯然我找到了禁用狀態,但沒有改變這種狀態。

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); 
      } 
    } 
} 

即時通訊獲取禁用的按鈕的文本,但我不能禁用它們。

任何幫助?謝謝!

+1

您只需要保留對ButtonGroup對象或jRadioButton對象本身的引用,並在需要時將其禁用。 'ButtonGroup'提供'getElements()'方法 –

+0

您可能正在尋找_enabled_屬性。 – trashgod

+0

我編輯的問題,你可以看到我嘗試使用ButtonGroup的getElements()方法,我可以找到什麼按鈕被禁用,並使用控制檯帶來的文本,但我不能使用setEnabled方法來禁用jRadioButton ....不知道爲什麼...感謝您的幫助 – Hannibal

回答

1

我不知道你是否有任何問題找到第二組中單選按鈕的引用,或者你不能禁用單選按鈕。

對於第一個問題,很簡單,你只需保留第二組中的單選按鈕的引用。

對於第二個問題,您需要繼承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); 
} 
+0

嘿肖恩如果我直接進入JrRadioButton引用編輯器說「它不能被解析爲類型」錯誤。我認爲是因爲這些按鈕在ButtonGroup中,實際上我需要訪問ButtonGroup中的按鈕來與它們做「某事」......感謝幫助 – Hannibal

+0

我剛剛檢查了API,按鈕組有一個名爲getElements的方法()返回參與該組的所有按鈕。你可以迭代這個集合。 – seanxiaoxiao

1

試試這個,它的工作原理。

AbstractButton button = ... 

button.getModel().setEnabled(true/false) 
0

雅,你的setEnabled(真)到支持單選按鈕。
所以在這裏編輯,希望可以幫助別人。

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) 
      } 
    } 
} 

Thanks @Hannibal,您的帖子保存了我的一天。