gpt4 book ai didi

java - 在 JPanel 中使用 sleep

转载 作者:行者123 更新时间:2023-11-30 06:59:10 25 4
gpt4 key购买 nike

我编写了一个简单的java程序来在屏幕上放置一些矩形(在彼此之间有一些延迟之后)

package guitest2;
import java.awt.Graphics;
import javax.swing.JPanel;

public class DrawPanel extends JPanel {
public void paintComponent( Graphics g) {
super.paintComponent(g);
for (int i = 0; i < 10; i++ ) {
g.drawRect(10+5*i, 10+5*i, 20, 20);
try{
Thread.sleep( 2000 );
}
catch (InterruptedException ex) { }
}
}
}

我在中使用了该类

package guitest2;
import javax.swing.JFrame;
public class Guitest2 {
public static void main(String[] args) {
DrawPanel panel = new DrawPanel();
JFrame app = new JFrame();
app.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE);
app.add(panel);
app.setSize(450, 250);
app.setVisible(true);
}
}

运行上述代码的问题是,方 block 没有显示。 10*2S = 20 秒后,显示包含所有方 block 的最终面板。我想要的是:

1- 使用 g.drawRect 绘制一个正方形。

2-等待2秒

3-删除以前的正方形并绘制新的。

最佳答案

也许您可以使用如下代码,我用注释更改了您的代码。

    import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
import javax.swing.JFrame;

public class RectTest {
DrawPanel panel;
int x;
int y;
public static void main(String[] args) {
new RectTest().startApp();
}

public void startApp() {
panel = new DrawPanel();
JFrame app = new JFrame();
app.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE);
//modify this line
app.getContentPane().add(panel);
app.setSize(450, 250);
app.setVisible(true);
//added for loop here
for (int i = 0; i < 10; i++ ) {
// x,y here
x = 10+5*i;
y = 10+5*i;
// repaint the panel
panel.repaint();
// wait 2sec
try{
Thread.sleep( 2000 );
}
catch (InterruptedException ex) { }
}
}

class DrawPanel extends JPanel {
public void paintComponent( Graphics g) {
//super.paintComponent(g);
// repaint the backround to see the single reactangles
g.setColor(Color.white);
g.fillRect(0, 0, this.getWidth(), this.getHeight());

g.setColor(Color.green);
g.drawRect(x, y, 20, 20);
}
}
}

关于java - 在 JPanel 中使用 sleep ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41247668/

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