3

我正在创建一个 java 桌面应用程序。我有两个按钮“创建”和“取消”。如果我按创建,它将在新窗口中创建一个报告。我的问题在“取消”按钮上。如果用户按下创建按钮,则需要一些时间来创建新报告。取消按钮应该只在创建时起作用。如果用户按下取消按钮,报告创建操作应该中止。我添加动作侦听器来创建和取消按钮,但是当我单击创建时,我无法同时单击取消按钮。

4

2 回答 2

2

尝试在单独的线程中运行每个进程。取消不起作用的原因是创建需要时间来完成其过程。在那段时间里,它占用了主线程并停止了任何可能被其他 UI 元素执行的操作(包括取消按钮)。

您的取消按钮可能正在工作。但是每次单击它时,被触发的事件都会被放入队列的后面,以便在创建按钮的事件后面进行处理。通过将事件处理放在单独的线程中并同步两个按钮所需的任何资源(只要这些资源是线程安全的!),您应该能够使用取消按钮轻松停止由事件按钮创建的线程。

于 2012-08-16T13:43:01.373 回答
0

尝试创建两个不同ActionListener的 s:一个用于 "Create" JButton,一个用于 "Cancel" JButton。这应该允许一个响应,而另一个正在处理。

于 2012-08-16T13:41:26.010 回答