这是我想做的事情:
我有一个JFrame
包含JTextArea
上显示更新要去连接。如果用户JButton
想要取消连接,则应该能够按其右侧的。但是,由于尝试进行连接时连接正在阻塞(使用)线程,因此GUI被冻结。我正在寻找快速解决方案。有ActionListener
可能在单独的线程上吗?尽管我可以基本使用可运行对象,但是我对线程没有太多经验。
答案是否与使用EDT有关?如果是这样,应如何实施?
PS为澄清起见,该按钮应该能够杀死创建连接的线程。看完后似乎是executorService。可以帮上忙吗?是?还是根本不?
建议首先了解有关Swing(或几乎任何UI框架)和多线程的知识。这是餐巾纸的版本:
ExecutorService
和其朋友将使在后台线程上运行长时间或阻塞的东西相对容易EventQueue.invokeLater
调用中封装与UI相关的代码。这将确保Runnable
您传递的内容在UI线程上执行。本SwingWorker
类封装这种逻辑,并提供一个易于使用的帮手简单的情况。
第一次执行此操作时,可能会有些令人生畏,但彻底了解这一点很有意义,因为它不仅适用于Swing,而且适用于任何其他UI代码。
问题内容: 我有一个程序在其中加载文件,同时显示一个窗口以通知用户正在加载文件。我决定制作一个FileLoader类,它是一个实际上处理了文件加载的SwingWorker类,以及一个实现PropertyChangeListener的ProgressWindow,用于通知用户传递给它的SwingWorker的状态。 我的代码当前如下所示: 问题是,每当我调用loader.get()时,它都会冻结GU
注意:我工作了很多时间并研究了google和stackoverflow,但我找不到答案。 我用线。sleep(),它冻结了所有其他JDialog、JFrame和线程。 我的示例代码: 在这种情况下,JDialog无法正确显示: inccorect出现jdialog 但它必须符合这一点: true出现jdialog 我怎样才能解决这个问题。我想让主线程等待另一个线程。有人可以纠正我的示例代码,或者在
我是Swing的新手,所以这似乎是一个非常天真的问题。 我有一个JFrame,它显示一个初始语句和两个单选按钮。RadioButton1表示接受,RadioButton2表示拒绝。如果用户选择接受,程序将继续。因此,我为Accept创建了一个ActionListener,以便我的其余代码都在这个ActionListener中。然而,只要用户按下Accept,GUI就会冻结。按Reject键只是程序
我有一个用PHP编写的守护进程(不是最好的语言,但与我一起工作),它用于从队列接收作业,并在需要完成作业时处理它们。对于每个新作业,我使用pcntl_fork()将作业分叉到子进程中。在这个子进程中,我然后使用proc_open()执行用于音频转码的长时间运行的系统命令,完成后直接返回到子进程。作业完成后,子进程退出并由父进程清理。 为了保持这个守护进程始终运行,我使用upstart。这是我的暴发
按下按钮后,我的界面冻结。我使用线程,但我不知道为什么仍然挂起。任何帮助都将不胜感激。提前谢谢
从Android API 26开始,Android系统要求“执行一些用户可以注意到的操作”的服务将自身注册为前台服务。和“前台服务必须显示通知” 我有一个播放音频文件的服务。当播放暂停时,用户应该能够滑动通知(与Google Play音乐应用程序一样)。但是如果我调用,那么我的服务会在几分钟内被系统杀死。 暂停播放时,如何允许删除通知?