2015-06-19 77 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();