在JOPTIONPANE中禁用空格键和ENTER键

XxR*_*aXx 1 java swing joptionpane

首先,我为双重帖子道歉(我无法删除旧帖子)...实际上,我认为我的问题已解决,但事实并非如此。

我用Java开发的软件有问题。用户(将是7-9岁的孩子)必须在JtextPane中编写文本。当他没有时间写信时,会出现一个弹出窗口,说“没有时间了,该写另一个故事了”。

唯一的问题是:如果用户在弹出消息时进行书写,则弹出消息会消失,因为空格键或“输入”会验证消息。而且,当您编写文本时,通常会按该键...:/

无论如何,我可以禁用此功能吗?并且仅当用户单击“确定”时才允许该消息消失吗?我尝试使用监听器,但是没有用。

我用它来创建MessageDialog:

JOptionPane.showMessageDialog(null,
                new UTIL_LireFichierTXT().getText(MessageTempsImparti)
                ,new UTIL_LireFichierTXT().getText(MessageAttention),JOptionPane.WARNING_MESSAGE);
Run Code Online (Sandbox Code Playgroud)

我是一名实习生,老板告诉我“您必须显示弹出窗口”,所以我无能为力...您有任何帮助我的想法吗?谢谢阅读。

Ser*_*kyy 5

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

    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);
Run Code Online (Sandbox Code Playgroud)

仅当老板确实需要此解决方案时,才使用此解决方案。我倾向于使您的文本组件不可编辑,并在其上显示警告消息(您可以为此目的使用JLayeredPane)。