簡體   English   中英

在按鈕組中選擇了哪個單選按鈕

[英]Which radio button is selected in a button group

我如何做才能在不執行此操作的情況下在按鈕組上選擇哪個單選按鈕:

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

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

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

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

您可以通過ButtonGroup的getSelection ()方法獲取所選按鈕的ButtonModel。 我不知道如何避免有條件地在選定按鈕上分支,除非您具有從ButtonModel到執行動作的某種輔助數據結構映射。 如果有的話,您可以根據返回的ButtonModel觸發操作。

我知道這個問題早已發布。 無論如何,我們可以使用setActioncommand函數。 在創建單選按鈕時,可以調用setActionCommand來設置操作命令值,該值可以用來引用所選的單選按鈕。

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

Darryl的“ 選擇按鈕組”具有getSelectedButton()方法。

為了處理按鈕組bg,可以通過調用按鈕組的getElements()方法並將其用作Collections.list()方法的參數來獲取按鈕,只需將結果保存在arraylist中即可。 從那里檢索相對正確的按鈕相對簡單。

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

ButtonGroup類沒有提供一種方法來標識組中當前選擇的按鈕(從AbstractButton繼承)。 它僅具有clearSelection()方法來清除組中所有按鈕的選定狀態(不具有選擇/取消選擇按鈕狀態的JButton和JMenuItem除外)。

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

除此之外,不,...您將需要進行條件分支。

暫無
暫無

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

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