我正在创建一个Java桌面应用程序。我有两个按钮“创建”和“取消”。如果我按下“创建”按钮,它将在新窗口中创建一个报告。我的问题在于“取消”按钮。如果用户按下“创建”按钮,创建新报告需要一些时间。取消按钮只能在创建期间工作。如果用户按下取消按钮,则报告创建操作应该中止。我向创建和取消按钮添加了动作侦听器,但是当我点击创建后,无法同时点击取消按钮。
尝试在单独的线程中运行每个进程。取消操作无法正常工作的原因是创建过程需要时间来完成其流程。在此期间,它会占用主线程,并停止任何其他UI元素可以执行的操作(包括取消按钮)。您的取消按钮可能正在工作。但是每次单击它时,触发的事件都会被放入处理队列的末尾,位于创建按钮事件之后。通过将事件处理程序放在单独的线程中,并同步两个按钮所需的任何资源(只要这些资源是线程安全的!),您应该能够轻松地使用取消按钮停止由事件按钮创建的线程。