Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java多线程方法sleep()创建闪烁文本_Java_Multithreading_Swing - Fatal编程技术网

使用java多线程方法sleep()创建闪烁文本

使用java多线程方法sleep()创建闪烁文本,java,multithreading,swing,Java,Multithreading,Swing,嗨,我正在使用线程处理方法创建一个闪烁的文本框,下面是我的代码: import javax.swing.*; public class FlashingText extends JApplet implements Runnable { /** * */ private static final long serialVersionUID = 1L; private JLabel jlblText = new

嗨,我正在使用线程处理方法创建一个闪烁的文本框,下面是我的代码:

import javax.swing.*;

public class FlashingText extends JApplet implements Runnable {
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private JLabel            jlblText         = new JLabel("welcome",JLabel.CENTER);

    public FlashingText() {
        add(jlblText);
        new Thread(this).start();
    }

    @Override
    public void run() {
        try {
            while(true) {
                if(jlblText.getText() == null) {
                    jlblText.setText("Welcome");
                    Thread.sleep(2000);
                } else
                    jlblText.setText(null);
            }
        } catch(InterruptedException ex) {

        }
    }
}
在我编译并运行它之后,文本似乎根本没有闪烁 我的代码有什么问题吗?
非常感谢

据我所知,以下代码块中存在问题:

    try {
        while(true) {
            if(jlblText.getText() == null) {
                jlblText.setText("Welcome");
                Thread.sleep(2000);
            } else
                jlblText.setText(null);
        }
    }
因为第一次看到值是欢迎的,所以它将进入循环并转到else并将其设置为null,然后立即再次检查,因为else中没有睡眠,所以它将再次检查并进入if块并将其设置为欢迎,整个过程将以很快的速度完成,这样你就看不到闪光效果了。所以我认为你应该试着在else块的末尾放一个睡眠,然后看看,根据我的说法,它应该会起作用。 您应该更改:

 else
     jlblText.setText(null);


或者类似的东西据我所知,以下代码块中存在问题:

    try {
        while(true) {
            if(jlblText.getText() == null) {
                jlblText.setText("Welcome");
                Thread.sleep(2000);
            } else
                jlblText.setText(null);
        }
    }
因为第一次看到值是欢迎的,所以它将进入循环并转到else并将其设置为null,然后立即再次检查,因为else中没有睡眠,所以它将再次检查并进入if块并将其设置为欢迎,整个过程将以很快的速度完成,这样你就看不到闪光效果了。所以我认为你应该试着在else块的末尾放一个睡眠,然后看看,根据我的说法,它应该会起作用。 您应该更改:

 else
     jlblText.setText(null);


或者类似的东西据我所知,以下代码块中存在问题:

    try {
        while(true) {
            if(jlblText.getText() == null) {
                jlblText.setText("Welcome");
                Thread.sleep(2000);
            } else
                jlblText.setText(null);
        }
    }
因为第一次看到值是欢迎的,所以它将进入循环并转到else并将其设置为null,然后立即再次检查,因为else中没有睡眠,所以它将再次检查并进入if块并将其设置为欢迎,整个过程将以很快的速度完成,这样你就看不到闪光效果了。所以我认为你应该试着在else块的末尾放一个睡眠,然后看看,根据我的说法,它应该会起作用。 您应该更改:

 else
     jlblText.setText(null);


或者类似的东西据我所知,以下代码块中存在问题:

    try {
        while(true) {
            if(jlblText.getText() == null) {
                jlblText.setText("Welcome");
                Thread.sleep(2000);
            } else
                jlblText.setText(null);
        }
    }
因为第一次看到值是欢迎的,所以它将进入循环并转到else并将其设置为null,然后立即再次检查,因为else中没有睡眠,所以它将再次检查并进入if块并将其设置为欢迎,整个过程将以很快的速度完成,这样你就看不到闪光效果了。所以我认为你应该试着在else块的末尾放一个睡眠,然后看看,根据我的说法,它应该会起作用。 您应该更改:

 else
     jlblText.setText(null);


或者类似这样的东西,从代码中看,您似乎并没有在闪烁任何东西。我发现您的代码存在一些问题:

  • 如果标签没有文本,则
    getText()
    方法将生成空字符串(
    “”
    ),而不是
    null
  • 在更新可视组件时,需要通过事件调度程序线程(EDT)。这是通过课堂向您公开的
  • sleep()
    threads通常是个坏主意。如果通过EDT进行更改,将挂起ED线程,这将导致应用程序UI冻结,这是不需要的
  • 你在吞咽例外。在异常处理中,您没有做任何事情。不处理异常被认为是不好的做法(有时一条简单的日志消息就可以了)

从代码上看,您似乎并没有在闪烁任何东西。我发现您的代码存在一些问题:

  • 如果标签没有文本,则
    getText()
    方法将生成空字符串(
    “”
    ),而不是
    null
  • 在更新可视组件时,需要通过事件调度程序线程(EDT)。这是通过课堂向您公开的
  • sleep()
    threads通常是个坏主意。如果通过EDT进行更改,将挂起ED线程,这将导致应用程序UI冻结,这是不需要的
  • 你在吞咽例外。在异常处理中,您没有做任何事情。不处理异常被认为是不好的做法(有时一条简单的日志消息就可以了)

从代码上看,您似乎并没有在闪烁任何东西。我发现您的代码存在一些问题:

  • 如果标签没有文本,则
    getText()
    方法将生成空字符串(
    “”
    ),而不是
    null
  • 在更新可视组件时,需要通过事件调度程序线程(EDT)。这是通过课堂向您公开的
  • sleep()
    threads通常是个坏主意。如果通过EDT进行更改,将挂起ED线程,这将导致应用程序UI冻结,这是不需要的
  • 你在吞咽例外。在异常处理中,您没有做任何事情。不处理异常被认为是不好的做法(有时一条简单的日志消息就可以了)

从代码上看,您似乎并没有在闪烁任何东西。我发现您的代码存在一些问题:

  • 如果标签没有文本,则
    getText()
    方法将生成空字符串(
    “”
    ),而不是
    null
  • 在更新可视组件时,需要通过事件调度程序线程(EDT)。这是通过课堂向您公开的
  • sleep()
    threads通常是个坏主意。如果通过EDT进行更改,将挂起ED线程,这将导致应用程序UI冻结,这是不需要的
  • 你在吞咽例外。在异常处理中,您没有做任何事情。不处理异常(有时是一条简单的日志消息