簡體   English   中英

如何在Java中禁用ButtonGroup中的JRadioButton

[英]How to disable a JRadioButton inside a ButtonGroup in Java

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

我得到了禁用按鈕的文本,但我無法禁用它們。

有幫助嗎? 謝謝!

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

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

對於第二個問題,您需要子類化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);
}

試試這個,它有效。

AbstractButton button = ...

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

Ya,你將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,你的帖子救了我的一天。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM