程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了actionPerformed方法内部的线程睡眠大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决actionPerformed方法内部的线程睡眠?

开发过程中遇到actionPerformed方法内部的线程睡眠的问题如何解决?下面主要结合日常开发的经验,给出你关于actionPerformed方法内部的线程睡眠的解决方法建议,希望对你解决actionPerformed方法内部的线程睡眠有所启发或帮助;
  1. 在这种情况下可以工作,因为您以编程方式冻结了Swing GUI,但是没有/没有其他更新,也没有 其他JComponent

  2. 在Swing GUI上还有其他一些更新(Thread.sleep(int)冻结事件调度线程)的情况下,该方法不起作用

  3. 默认情况下,JComponents XxxModels永不更新的所有更新将在JComponents vIEw

  4. 直到睡眠结束,您将丢失所有更新到GUI的示例

解决方法

首先,我想说的是,我知道@R_944_10377@是错误的,因此,我出于好奇而问这个问题。可以说我有一个这样的秋千应用程序:

import java.awt.borderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class ThreadSleeping {
    JFrame frame = new JFrame();
    JPanel panel = new JPanel();
    JButton button = new JButton("Load");
    JLabel label = new JLabel();

    public ThreadSleeping() {
        panel.add(button);

        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent arg0) {
                label.setIcon(new ImageIcon(
                        "C:/Users/Public/Pictures/Sample Pictures/Tulips.jpg"));
                System.out.println("Tulips painted");
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException E) {
                    e.printStackTrace();
                }
                label.setIcon(new ImageIcon(
                        "C:/Users/Public/Pictures/Sample Pictures/Koala.jpg"));
                System.out.println("Koala painted");

            }
        });

        frame.add(panel,BorderLayout.NORTH);
        frame.add(label,BorderLayout.CENTER);
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.setSize(1024,768);
        // frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new ThreadSleeping();
            }
        });
    }
}
@H_262_33@

基本上,当我单击Load按钮时,我期望Tulips.jpg图像显示,然后GUI冻结2秒钟,然后我期望Koala.jpg图像显示。但是发生的是:我单击按钮,GUI冻结2秒钟并Koala.jpg显示。没有Tulips.jpg之前。但是让我感到困惑的是当我把它们System.out.println("Tulips painted");System.out.println("Koala painted");。因此,当我单击按钮时,它会打印“郁金香画”,并在2秒钟后打印“拉画”。有人可以告诉我这是怎么回事吗?问候。

大佬总结

以上是大佬教程为你收集整理的actionPerformed方法内部的线程睡眠全部内容,希望文章能够帮你解决actionPerformed方法内部的线程睡眠所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。