java - sleep 一个java线程但首先更新jFrame

标签 java multithreading swing

我想在执行函数 mediaPlayer() 之前显示文本。在媒体播放器执行期间,我使线程 hibernate 。没关系,因为那时什么都不需要发生(然后只需要听)。

但是,最后一条文本:“Listen to...”并未显示(除了几秒钟的延迟)。有没有办法在线程进入休眠状态之前先刷新 jFrame?

 expText.setText("Listen to the song and give a rating when it finishes.");

                    startButton.setEnabled(false);


                    //play sound
                    try {
                        mediaPlayer();
                        //wait for the duration of the stimuli
                        Thread.sleep(stimDuration);
                    ...

最佳答案

在 EDT 渲染另一帧之前,setText 不会显示,但它无法执行此操作,因为它正忙于 hibernate stimDuration 时间。

尝试在单独的线程上播放声音,在其他线程上播放声音,检测声音何时停止,然后在 EDT 上执行另一个操作,将 expText 更改回原始值您拥有的文本。

关于java - sleep 一个java线程但首先更新jFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28417646/

相关文章:

java - 具有单独文本和图标背景颜色的 JLabel

java - 如何以正确的方式定期运行代码

java - Spring 登录页面可以工作,但我的登录页面不行?

java - 整数类型 Long 的显式规范

java - 每个使用字段的方法中的同步块(synchronized block)

C++11 如何在 1 个线程中使用条件变量处理 2 个线程安全队列

c++ - 使用线程读取两个文件并输出到另一个文件

java - Spring 集成 : Message released twice after delay

java - 从外部类创建子类的对象实例

java - 为什么我的文本区域不显示