2015-06-19 48 views
0

我創建了這個彈出窗口,它將顯示響應在我的gui中單擊的按鈕。我有兩個關於這個問題。在Java中實現JOptionPane

  1. 如何擺脫單選按鈕下方的文本字段?
  2. 我需要檢查單擊確定按鈕後選擇哪個單選按鈕,但我沒有創建該按鈕。那麼我將如何實現actionPerformed函數呢?

我的代碼:

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {           
    if(evt.getSource() == jButton2) 
     optionPopup(); 
} 

private void optionPopup(){ 
    JPanel panel = new JPanel(); 
    JRadioButton undergraduateButton = new JRadioButton(); 
    JRadioButton graduateButton = new JRadioButton(); 
    ButtonGroup group = new ButtonGroup(); 

    undergraduateButton.setText("Option A"); 
    graduateButton.setText("Option B"); 
    group.add(undergraduateButton); 
    group.add(graduateButton); 
    panel.add(undergraduateButton); 
    panel.add(graduateButton); 

    JOptionPane.showInputDialog(panel); 

enter image description here

回答

5
  1. 使用JOptionPane.showMessageDialog,而不是JOptionPane.showInputDialog

    ,如果你還是希望有?圖標而不是!一個,使用

    JOptionPane.showMessageDialog(null, panel, "title", JOptionPane.QUESTION_MESSAGE); 
    

    ,你還可以通過使用JOptionPane.PLAIN_MESSAGE

    如果你想確保客戶按下OK按鈕使用

    int response = JOptionPane.showConfirmDialog(null, panel, "title", JOptionPane.PLAIN_MESSAGE); 
    

    如果response-1這意味着窗口是通過X按鈕關閉刪除圖標,如果是0用戶按下OK

    更多信息在:https://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html


  • 使用undergraduateButton.isSelected()graduateButton.isSelected()以查看是否選擇其中之一。
  • +0

    第一部分像魅力一樣工作,謝謝。至於第二個問題,我假設你提供的方法會在任何一個按鈕被選中時作出響應。但我只想知道單擊確定按鈕後選擇哪個按鈕。爲此,我會在使用JOptionPane中的OK_OPTION方法檢查哪個按鈕被選中之前? – Aeleon

    +0

    沒關係,我想我想通了。在這種情況下使用showConfirmDialog可能會更好,因爲它會根據單擊哪個按鈕返回一個值。仍然感謝您的幫助 – Aeleon

    +0

    @Aeleon在這種情況下,您可以嘗試'int response = JOptionPane.showConfirmDialog(null,panel,「title」,JOptionPane.PLAIN_MESSAGE);'。如果響應爲'0',則按下確定按鈕,如果是'-1',則用'X'按鈕關閉對話框。根據這個結果,你可以繼續前進。 – Pshemo

    2

    我認爲你要做的事情被稱爲JOptionPane的直接使用Refer to the documentation瞭解更多詳情。

    JOptionPane pane = new JOptionPane(arguments); 
    pane.set.Xxxx(...); // Configure 
    JDialog dialog = pane.createDialog(parentComponent, title); 
    dialog.show();