2011-03-10 196 views
1

我能做些什麼工作再上一個ButtonGroup中選擇哪個單選按鈕沒有這樣做:哪個單選按鈕一個按鈕組中選擇

if (jRadioButton1.isSelected()) { 
    //... 
} 

if (jRadioButton2.isSelected()) { 
    //... 
} 

if (jRadioButton3.isSelected()) { 
    //... 
} 

if (jRadioButton4.isSelected()) { 
    //... 
} 

回答

3

你可以得到ButtonModel的用於通過getSelection選擇按鈕() ButtonGroup的方法。例如,我不知道如何避免在選定的按鈕上有條件地分支,除非您有某種從ButtonModel到執行操作的輔助數據結構映射。如果你有這個,那麼你可以根據返回的ButtonModel激發這個動作。

+0

如何轉換正在返回的按鈕模型。進入像jRadioButton1或jRadioButton2? – user225269 2011-03-10 03:16:40

+0

您無法將其轉換;該模型用於爲JRadioButton供電。這是一個模型視圖控制器分離。你想完成什麼,我可以告訴你如何去做。 – I82Much 2011-03-10 03:43:32

+1

嘗試:獲取當前選定的單選按鈕。或者通過某種方式讓你知道哪一個是它,並根據它執行不同的代碼行。 – Yokhen 2013-04-04 00:09:28

0

如果這是您的意圖,ButtonGroup類不提供標識組中當前所選按鈕(從AbstractButton繼承)的方法。它只有clearSelection()方法來清除組中所有按鈕的選定狀態(JButton和JMenuItem沒有選擇/取消選擇按鈕狀態除外)。

一個解決方案,我能想到的是使用一個特殊的變量或場(AbstractButton中,一個JRadioButton或JRadioButtonMenuItem對象,如果它是在一個菜單項),以確定通過更新它的每個AbstractButton中的動作監聽器方法中哪一個是當前選擇的(使肯定會驗證用戶的點擊次數,因爲它可以被觸發多次!)。在其他方法中使用變量(通過對其進行類型轉換 - 僅用於AbstractButton)。

除此之外,不...你需要做條件分支。

2

我知道這個問題被寄回很久了。無論如何,我們可以使用setActioncommand函數。在創建單選按鈕的同時,可以調用setActionCommand來設置操作命令值,該值可用於引用所選的單選按鈕。

jRadioButton1.setActionCommand("jRadioButton1"); jRadioButton2.setActionCommand("jRadioButton2") . . String button_name = ((JToggleButton.ToggleButtonModel)button_group.getSelection()).getActionCommand();

0

對於處理按鈕組BG,您可以通過調用按鈕組的getElements()方法,並使用作爲Collections.list()方法的參數,只需要保存獲取的按鈕導致一個數組列表。從那裏檢索正確的按鈕相對簡單。

ArrayList<AbstractButton> arl = Collections.list(bg.getElements()); 
for (AbstractButton ab : arl) { 
    JRadioButton jrb = (JRadioButton) ab; 
    if (jrb.isSelected()) { 
     return jrb; 
    } 
} 
+3

給它添加一些描述 – piyushj 2016-06-16 04:59:39