gpt4 book ai didi

java - 为什么 TimeUnit.SECONDS.sleep(10);在它前面的代码之前被调用?

转载 作者:行者123 更新时间:2023-12-02 02:17:55 26 4
gpt4 key购买 nike

    package me.tykutcher.text.gui;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.util.concurrent.TimeUnit;

import javax.swing.JPanel;

public class TestPane extends JPanel {


public boolean sleeper = false;
public boolean sleeper2 = false;
public boolean sleeper3 = false;
public boolean sleeper4 = false;
public boolean sleeper5 = false;
public boolean sleeper6 = false;
/**
*
*/
private static final long serialVersionUID = 1L;

@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawString("Loading", 10, 23);
g.drawRect(60, 13, 175, 10);
g.setColor(Color.GREEN);
g.fillRect(61, 14, 25, 9);
sleeper = true;
if(sleeper == true){ //why do all of the delays run before adding the string, adding the rectangle, and filling the rectangle
try {
//delay for 10 seconds
TimeUnit.SECONDS.sleep(10);

} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}}
sleeper = false;
g.fillRect(87, 14, 25, 9);
sleeper2 = true;
if(sleeper2 == true){
try {
//delay for 10 seconds
TimeUnit.SECONDS.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
sleeper2 = false;
}
public Dimension getPreferredSize() {
return new Dimension(250, 37);
}

}

上面是我想要 10 秒延迟的类(只是测试)。下面是生成 JFrame GUI 的类,我在其中运行上述代码

package me.tykutcher.text.gui;

导入javax.swing.JFrame;

公共(public)类textGui {

public static void main(String[] args){
JFrame frame = new JFrame();
frame.setTitle("Loading... ");
frame.add(new TestPane());
frame.pack();
frame.setVisible(true);
}
}

如果我注释掉等待命令,代码就会立即运行,最终,我将有一个通知或 boolean 方法来完成这个,因为我的 gui 实际上会做一些事情

最佳答案

您在 sleep 之前绘制了形状,但是,只有在 paintComponent 方法完成时(即 sleep 之后)您才会看到它们。

如果你想绘制一些形状,然后有时间传递,然后再绘制一些形状,你需要在 paintComponent 方法之外设置时间传递(也许使用 javax.swing.Timer )并决定每次调用paintComponent时绘制什么。

关于java - 为什么 TimeUnit.SECONDS.sleep(10);在它前面的代码之前被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49015325/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com