Java 睡眠有相同的时间吗?

Java 睡眠有相同的时间吗?,java,multithreading,sleep,Java,Multithreading,Sleep,我正在为我的测试做一些工作,我感觉睡眠不起作用,你必须从组合框中选择100ms 300ms 500ms 1000ms。但当我启动程序,他们这样做时,看起来是一样的,也许我犯了一些错误。 提前谢谢。 这是我的密码: package vjezbanje; import java.util.Random; import javax.swing.ImageIcon; import javax.swing.JComboBox; import javax.swing.JFrame; import jav

我正在为我的测试做一些工作,我感觉睡眠不起作用,你必须从组合框中选择100ms 300ms 500ms 1000ms。但当我启动程序,他们这样做时,看起来是一样的,也许我犯了一些错误。 提前谢谢。 这是我的密码:

package vjezbanje;

import java.util.Random;

import javax.swing.ImageIcon;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Move extends Thread {

    JComboBox cb = new JComboBox();
    JLabel lb = new JLabel();
    JPanel pl = new JPanel();
    ImageIcon ic;
    private String[] brzine = {"100ms","300ms","500ms","1000ms"};   

    public JComboBox getCb() {
        return cb;
    }

    public void setCb(JComboBox cb) {
        this.cb = cb;
    }

    public JLabel getLb() {
        return lb;
    }

    public void setLb(JLabel lb) {
        this.lb = lb;
    }

    public JPanel getPl() {
        return pl;
    }

    public void setPl(JPanel pl) {
        this.pl = pl;
    }

    public Move() {                     
    }

    public void run() {

        pl.add(lb);
        cb = new JComboBox(brzine);

        for(int t=0; t<10; t++) {
        if(cb.getSelectedItem().equals("100ms")) {
            try {

                Random r = new Random ();
                int s = r.nextInt(6)+1;
                // 0 1 2 3 4 5
                lb.setIcon(new ImageIcon("slike\\"+s+".jpg"));
                Thread.sleep(100);
            } catch (InterruptedException e) {  
                e.printStackTrace();
            }
        }                   

        if(cb.getSelectedItem().equals("300ms")) {
            try {

                Random r = new Random ();
                int s = r.nextInt(6)+1;
                // 0 1 2 3 4 5
                lb.setIcon(new ImageIcon("slike\\"+s+".jpg"));
                Thread.sleep(300);
            } catch (InterruptedException e) {  
                e.printStackTrace();
            }   
        }       

        if(cb.getSelectedItem().equals("500ms")) {
            try {

                Random r = new Random ();
                int s = r.nextInt(6)+1;
                // 0 1 2 3 4 5
                lb.setIcon(new ImageIcon("slike\\"+s+".jpg"));
                Thread.sleep(500);          
            } catch (InterruptedException e) {  
                e.printStackTrace();
            }   
        }


        if(cb.getSelectedItem().toString().equals("1000ms")) {
            try {

                Random r = new Random ();
                int s = r.nextInt(6)+1;
                // 0 1 2 3 4 5
                lb.setIcon(new ImageIcon("slike\\"+s+".jpg"));
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }   
        }               
    }               
}   
vjezbanje包;
导入java.util.Random;
导入javax.swing.ImageIcon;
导入javax.swing.JComboBox;
导入javax.swing.JFrame;
导入javax.swing.JLabel;
导入javax.swing.JPanel;
公共类移动扩展线程{
JComboBox cb=新的JComboBox();
JLabel lb=新的JLabel();
JPanel pl=新的JPanel();
图像图标ic;
私有字符串[]brzine={“100ms”、“300ms”、“500ms”、“1000ms”};
公共JComboBox getCb(){
返回cb;
}
公共无效设置cb(JComboBox cb){
this.cb=cb;
}
公共JLabel getLb(){
返回磅;
}
公共无效设置lb(JLabel lb){
这1.lb=lb;
}
公共JPanel getPl(){
返回损益;
}
公共无效setPl(JPanel pl){
this.pl=pl;
}
公共移动(){
}
公开募捐{
pl.add(磅);
cb=新的JComboBox(brzine);

对于(int t=0;t与Gray一致,这应该是一个块,带有睡眠时间变量。 但是,我认为您要问的是“为什么我看不到我的图像在不同的时间发生变化?”。您可能看到的只是不同时间长度的“挂起”。这是因为您在GUI线程上执行所有更新,包括睡眠,所以在整个方法返回之前,没有任何实际更新


在后台进行更新的方法多种多样。我可能会推荐一些允许进度更新的后台工作程序。使用进度更新更改图像,并将工作程序方法更改为睡眠状态。

Wow。如何定义一个long数组,这样就不必有if块。然后代码大小除以4。哇。可以吗进一步编辑你的问题以提高英语水平(建议使用大写和标点符号),并解释您不了解的输出是什么?以及如何判断它们是否不同?等待之后没有计时,也没有打印。您正在进行单独的线程睡眠,这是它在结束之前所做的最后一件事。您还从事件分派线程外调用Swing方法,因此我想知道这是如何工作的。这这是我得到的。在程序中有一个组合框,我在其中定义了睡眠时间。当我启动它时,这些骰子看起来像是在转动,但无论我选择的速度是100 300 500 1000毫秒,看起来都是一样的。我希望这个1更好。抱歉英语不好:)谢谢,我想我现在找到了出路:)