[英]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.