我正在创建一个java桌面应用程序。我有两个按钮“create”和“cancel”。如果我按下创建它将在新窗口中创建一个报告。 我的问题是“取消”按钮。如果用户按下创建按钮,则需要一些时间来创建新报告。取消按钮应仅在创建时间内起作用。如果用户按下取消按钮,报告创建操作应该中止。我添加动作监听器来创建和取消按钮但是当我点击创建时我无法同时点击取消按钮。
答案 0 :(得分:2)
尝试在单独的线程中运行每个进程。取消的原因不起作用是创建需要时间来完成其过程。在那段时间它占用主线程并停止其他UI元素可能采取的任何操作(包括取消按钮)。
您的取消按钮可能正常。但是每次单击它时,被触发的事件都会被放入队列的后面,以便在创建按钮的事件后面进行处理。通过将事件的处理放在一个单独的线程中并同步两个按钮所需的任何资源(只要这些资源是线程安全的!),您应该能够使用取消按钮轻松地停止事件按钮创建的线程。
答案 1 :(得分:0)
尝试创建两个不同的ActionListener
:一个用于“创建”JButton
,另一个用于“取消”JButton
。这应该允许一个人在另一个人正在处理时做出回应。