【问题标题】:how to handle option types in JOptionPane.showConfirmDialog如何处理 JOptionPane.showConfirmDialog 中的选项类型
【发布时间】:2012-03-31 02:02:27
【问题描述】:

当单击 JOptionPane 中的按钮时,我需要编写一些代码来处理事件。我实际上是在使用 JOptionPane 插入用户名和密码,如果单击正确和确定按钮,则 JOptionPane 消失并且父 JFrame 保持活动状态,如果单击取消按钮,程序退出。我下面的示例代码仅显示了 JOptionpane 并单击任何按钮将其关闭 `JPanel 面板 = 新的 JPanel(); panel.setLayout(new GridLayout(4, 1)); //创建一个带有文本的标签(用户名) JLabel 用户名 = new JLabel("用户名");

    //Create a label with text (Password)
    JLabel password = new JLabel("Password");

    //Create text field that will use to enter username
    JTextField textField = new JTextField(12);

    //Create password field that will be use to enter password
    JPasswordField passwordField = new JPasswordField(12);

    //Add label with text (username) into created panel
    panel.add(username);

    //Add text field into created panel
    panel.add(textField);

    //Add label with text (password) into created panel
    panel.add(password);

    //Add password field into created panel
    panel.add(passwordField);

    //Show JOptionPane that will ask user for username and password
    JOptionPane.showConfirmDialog(mainFrame, panel, "Enter username and password", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);`

【问题讨论】:

标签: java swing jdialog joptionpane


【解决方案1】:

这些对话框返回一个 int 值,可以解释为以下值之一:

  • YES_OPTION
  • NO_OPTION
  • CANCEL_OPTION
  • OK_OPTION
  • CLOSED_OPTION

例如,

final int option = JOptionPane.showConfirmDialog(mainFrame, panel, "Enter username and password", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
if(option == JOptionPane.OK_OPTION){
    // OK was pressed. Now do stuff.
}
else if(option == JOptionPane.CANCEL_OPTION){
    // Cancel was pressed. Now do stuff.
}

【讨论】:

  • 甚至添加一个 switch 语句来消除令人讨厌的 IF 气味。
  • @SpencerKormos,不确定如何使用 switch 语句来消除“恶心”的气味......
  • 谢谢@Moonbeam 让我试试
  • @Moonbeam NoIF 的气味总是比 If-elseif-ad_nauseum 好。
  • @SpencerKormos,这对我来说似乎很主观。
【解决方案2】:

Javadoc 救援:

返回:

表示用户选择的选项的int

将结果与 JOptionPane 中定义的常量(OK_OPTIONCANCEL_OPTIONCLOSED_OPTION 等)进行比较

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-24
    • 2021-04-01
    • 2021-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    • 2021-05-26
    相关资源
    最近更新 更多