Java 在焦点侦听器之前运行ActionListener

Java 在焦点侦听器之前运行ActionListener,java,swing,listener,actionlistener,focuslistener,Java,Swing,Listener,Actionlistener,Focuslistener,我有一个应用程序,其中有一个文本框和一个按钮。文本框有focusListener(用于不正确的值),按钮有actionListener(用于将值保存到文件中)。 在文本字段中输入错误值时,一旦失去焦点,就会弹出一个错误消息窗口。现在我有两位议员 当焦点从tab out中丢失时,如果在字段中输入了错误的值,则弹出窗口将正确显示 但是,当我在字段中输入错误的值并且没有tab out时,我单击按钮,然后在focusListener(焦点丢失)之前激活actionListener,它将错误的值保存在文本

我有一个应用程序,其中有一个文本框和一个按钮。文本框有focusListener(用于不正确的值),按钮有actionListener(用于将值保存到文件中)。 在文本字段中输入错误值时,一旦失去焦点,就会弹出一个错误消息窗口。现在我有两位议员

  • 当焦点从tab out中丢失时,如果在字段中输入了错误的值,则弹出窗口将正确显示

  • 但是,当我在字段中输入错误的值并且没有tab out时,我单击按钮,然后在focusListener(焦点丢失)之前激活actionListener,它将错误的值保存在文本文件中,然后显示错误消息

  • 如何通过首先运行focuslistener来停止保存到文件中的错误值

    在焦点侦听器之前运行ActionListener

    • ,你可以回避这些事件,但可能会导致另一个副作用,我建议不要这样做

    • 使用调用器延迟EDT中所需的事件


    我尝试在actionlistener中使用invokelater,但仍然没有得到我想要的
    public void actionPerformed(ActionEvent事件){EventQueue.invokeLater(new Runnable(){public void run(){if(componentManager.textField.getText().equals(“”){}});)