在JDialog Box上禁用Escape键

时间:2014-04-25 06:03:27

标签: java swing joptionpane jdialog

我是java的初学者。

我已在JDialog框上创建,必须等待回复

以下代码是写

final Object[] options = {"Yes!! I am woking", "No!! was not working"};

final JOptionPane optionPane =
        new JOptionPane("IT look like are you busy  \n with Something else!!! \n Are you working?",
                JOptionPane.QUESTION_MESSAGE,
                JOptionPane.YES_NO_OPTION, null, options);

JDialog dialog = optionPane.createDialog("Are you working?");
dialog.setAlwaysOnTop(true);
dialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
dialog.toFront();
dialog.setVisible(true);

现在的问题是,当显示此对话框时,用户可以通过按退出键关闭此对话框现在我想要在按下退出键时停止关闭对话框。任何人都可以帮助我吗?

我已经参考了以下链接,该链接不适用于我

JDialog: How to disable the ESC key of my Modal dialog?

2 个答案:

答案 0 :(得分:5)

我找到了解决上述问题的完美解决方案。

首先,我们必须设置JDialog可聚焦:

 jDialog.setFocusable(true);

然后应用以下代码来禁用转义键:

    jDialog.addKeyListener(new KeyListener() {
         @Override
         public void keyPressed(KeyEvent e) {
           // Catch ESC key stroke.
           if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
              e.consume();
           }
         }
        });

答案 1 :(得分:1)

您必须在JDialog上为add listener设置以下属性为true。

 jDialog.setFocusable(true);

然后通过添加键侦听器,您可以通过以下代码

禁用或避免转义键
    jDialog.addKeyListener(new KeyListener() {
     @Override
     public void keyPressed(KeyEvent e) {
                   write any code related to kdy
     }
    });