在java swing中,想要在点击了第一个窗体的按钮后,显示出第二个窗体,但是第二个窗体是一个倒计时的动态

当我把第二个窗体作为一个单独的程序时,它能够正常显示所有组件及时间;
但是,当我想通过单击第一个窗体中的确定按钮来显示它时,它是透明的(我已经把它设为可见的了),只有当倒计时的时间停止了之后,它才完全显示出来。

图片上显示的是我单击了ok按钮后的情况:两个窗体的重叠,其中,前面一个窗体是透明的(在已经设置为可见的情况下)。
不知道是什么问题?

第二个窗体中,你肯定没有用线程。
如果倒计时,不是一个线程,那么它在执行时,就和那个窗口是一个线程。你把这个计时放在了窗体系的显示之前了,这样,当然会是等倒计时结束才会显示窗体。

如果你放在显示之后,那么窗体显示出来以后,也不会动态的显示倒计时时间。

下边是倒计时的那个窗体。
------------------------------------------------------------------------------------------------
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.Graphics;

public class RunTime extends JFrame {

TimePanel panel = null;

public RunTime() {

panel = new TimePanel(100);
getContentPane().add(panel, BorderLayout.CENTER);

new timer().start();
setSize(100, 120);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);

}

public static void main(String[] args) {
new RunTime();
}

class timer extends Thread {
public void run() {
try {
while (true) {
if (panel.time == 0) {
return;
}
repaint();
sleep(500);
}
} catch (Exception e) {

}
}
}
}

class TimePanel extends JPanel {
int time = 0;

public TimePanel(int time) {
this.time = time;
}

public void paint(Graphics g) {
super.paint(g);
g.drawString(time-- + "", 20, 50);
}

}
温馨提示:答案为网友推荐,仅供参考
相似回答