在JOPTIONPANE中禁用空格键和ENTER键

时间:2014-05-12 14:00:33

标签: java swing joptionpane

首先,我为双重帖子道歉(我无法删除旧帖子)...... 实际上,我认为我的问题已经解决了,但它不是......

我的软件是用Java开发的。用户(将是7-9岁的孩子)必须在JtextPane中写入文本。当没有时间让他写作时,会出现一个弹出窗口,上面写着"没有时间了,是时候写另一个故事"

唯一的问题是:如果用户在弹出消息时正在写入,则弹出窗口消失,因为空格键或"输入"验证消息。 当你写一篇文章时,你经常按下那些键......:/

无论如何,我可以禁用这个功能吗?只有当用户点击" OK"并且允许消息消失。 ? 我尝试使用听众,但它没有工作。

我用它来创建MessageDialog:

JOptionPane.showMessageDialog(null,
                new UTIL_LireFichierTXT().getText(MessageTempsImparti)
                ,new UTIL_LireFichierTXT().getText(MessageAttention),JOptionPane.WARNING_MESSAGE);

我是一名实习生,而我的老板告诉我"你必须出示一个弹出窗口,所以我无论如何都不能做... 你有什么想法帮助我吗? 谢谢你的阅读。

1 个答案:

答案 0 :(得分:4)

做你想做的事并不是一个好主意,但我有一个解决方案。您可以在显示对话框时禁用所有键事件。这是一个样本。

    AWTEventListener myListener = new AWTEventListener() {

        @Override
        public void eventDispatched(AWTEvent event) {
            if (event instanceof KeyEvent) {
                ((KeyEvent) event).consume();
            }
        }
    };
    Toolkit.getDefaultToolkit().addAWTEventListener(myListener, AWTEvent.KEY_EVENT_MASK);
    JOptionPane.showMessageDialog(null, "You have a message!");
    Toolkit.getDefaultToolkit().removeAWTEventListener(myListener);

请仅在您的老板真正需要时使用此解决方案。我希望你的文本组件不可编辑,并将警告信息显示为ovelay(你可以使用JLayeredPane)。