JoptionPane.showInputDialog没有取消按钮和退出句柄

时间:2017-07-28 11:29:24

标签: java joptionpane

https://i.stack.imgur.com/LrdTN.jpg

我想得到这种输入对话框问题是它只接受int类型 发现了这个     `

 String[] options = {"OK"};

int selectedOption = JOptionPane.showOptionDialog(null, panel, "The Title", JOptionPane.NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, options , options[0]);

` 我也想处理X(退出按钮红色按钮关闭按钮),因为它会导致异常 引起的错误

我正在使用regex.Matcher

at java.util.regex.Matcher.getTextLength(Unknown Source)
at java.util.regex.Matcher.reset(Unknown Source)
at java.util.regex.Matcher.<init>(Unknown Source)
at java.util.regex.Pattern.matcher(Unknown Source)

由于

1 个答案:

答案 0 :(得分:1)

现有解决方案

您可以使用JOptionPane的InputDialog

String res = JOptionPane.showInputDialog(null, "Enter your name", "The title", JOptionPane.QUESTION_MESSAGE);
System.err.println(res);

如果用户关闭了对话框或者没有插入某些文字,请注意该结果为 NULL

但是这个解决方案并非完全看起来像你想要的对话框。您必须创建自己的JOptionPane。

自己的解决方案

我建议使用模态JDialog并删除框架(这会导致问题)

  

.setUndecorated(真)

或覆盖自己类中的dispose()来处理它

@Override
public void dispose()
{
    //YOUR CODE
    super.dispose();
}

你自己班级的开头可能是这样的:

public class MyOptionPane extends JDialog
{
    public MyOptionPane(Dialog owner, boolean modal)
    {
        super(owner, modal);
        this.setUndecorated(true); //Remove the frame
    }
}

继续这些步骤:

  1. 添加标签&#34;输入您的姓名&#34;到GUI
  2. 将文本字段添加到GUI
  3. 向GUI添加OK按钮(使用ActionListener)
  4. 将ActionListener附加到&#34;确定&#34;按钮
  5. 获取文本字段值&#34;确定&#34;单击,返回并处理您的JDialog
  6. 如果您有任何问题或意见,请评论此帖。