2012-04-30 37 views
0
package pkg411project; 

import javax.swing.ButtonGroup; 

public class CrudMain extends javax.swing.JInternalFrame { 

public CrudMain() { 
    initComponents(); 
} 

@SuppressWarnings("unchecked") 

private void jRadioButton1ActionPerformed(java.awt.event.ActionEvent evt) {            
    // TODO add your handling code here: 
}            

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
    BankRecordFrame bdFrame = new BankRecordFrame(); 
    bdFrame.setVisible(true); 
    this.jDesktopPane2.add(bdFrame); 

}           

// Variables declaration - do not modify      
private javax.swing.JButton jButton1; 
private javax.swing.JDesktopPane jDesktopPane2; 
private javax.swing.JLabel jLabel1; 
private javax.swing.JRadioButton jRadioButton1; 
private javax.swing.JRadioButton jRadioButton2; 
private javax.swing.JRadioButton jRadioButton3; 
private javax.swing.JRadioButton jRadioButton4; 
private javax.swing.JRadioButton jRadioButton5; 
// End of variables declaration     

//ButtonGroup group = new ButtonGroup(); 
//group. 


} 

這是一個我認爲很簡單的問題。我在單選按鈕下面有四個單選按鈕和一個常規提交按鈕。當用戶點擊提交按鈕(此時選擇一個radioButton)時,我嘗試激活一個Jframe。根據所選的單選按鈕啓動Jframe。你如何將它放入代碼?有任何想法嗎?basic radiobutton issue - java

+1

爲了更快提供更好的幫助,請發佈[SSCCE](http://sscce.org/)。 –

回答

1

你可以用多種方法做到這一點。我會嘗試在這裏發佈其中的一個。

這不一定是最好的選擇,但它可能只是爲你工作。 (我沒有測試這個)

public class CrudMain extends javax.swing.JInternalFrame { 

public CrudMain() { 
    initRadioButtons(); 
    initOtherStuff(); 
} 

private JRadioButton[] radioButtons = new JRadioButton[4]; 
private JRadioButton btn1 = new JRadioButton(); 
private JRadioButton btn2 = new JRadioButton(); 
private JRadioButton btn3 = new JRadioButton(); 
private JRadioButton btn4 = new JRadioButton(); 
private JButton submitBtn = new JButton("Submit"); 

public void initRadioButtons() { 
    radioButtons[0] = btn1; 
    radioButtons[1] = btn2; 
    radioButtons[2] = btn3; 
    radioButtons[3] = btn4; 
} 

public void initOtherStuff() { 
    //add stuff to your frame 
    ....... 
    submitBtn.addActionListener(this) 
} 

public void actionPerformed(ActionEvent e) { 
    for(int i =0; i < radioButtons.length; i++){ 
     if(radioButtons[i].isSelected()){ 
      //Open your frame here 
      break; //Place break if you only want one radiobutton to be checked. 
     } else { 
      //This button was not selected 
     } 
    } 
} 

那麼讓我們來看看這段代碼。我把所有的按鈕都放在一個數組中,這樣你可以很容易地循環查看內容是否被選中。我在按鈕上放置了一個actionListener,當有人點擊它時會觸發該按鈕。當actionListener觸發時,它將遍歷數組。在每次迭代中,每個按鈕狀態都會被檢查。如果選擇了一個,它將觸發一個動作。

就是這樣。如果您需要此代碼的幫助,請讓我知道!

祝你好運!

編輯:

只注意到這個方法,你可以不指定每個單選按鈕的動作。這是你必須添加到這:) :)祝你好運!

1

在按鈕的動作偵聽器,檢查哪個單選按鈕被選中:

private void jButton1ActionPerformed(ActionEvent evt) {           
    if (jRadioButton1.isSelected()) { 
     // show frame 1 
    } 
    else if (jRadioButton2.isSelected()) { 
     // show frame 2 
    } 
    else if (jRadioButton3.isSelected()) { 
     // show frame 3 
    } 
    else if (jRadioButton4.isSelected()) { 
     // show frame 4 
    } 
}      
+0

這將顯示單擊RadioButton時的幀,而不是當按下提交按鈕時。不一定是錯的,只是不同的行爲,然後OP似乎想要的。 –

1

您需要使用ButtonGroup的控制選擇行爲(所以只有一個單選按鈕,同時選擇)。將一個ActionListener添加到JButton中,並在偵聽器中從ButtonGroup中檢索選定的按鈕。