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

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

图片上显示的是我单击了ok按钮后的情况:两个窗体的重叠,其中,前面一个窗体是透明的(在已经设置为可见的情况下)。
不知道是什么问题?
展开
 我来答
百度网友845f74e61
2012-05-14 · TA获得超过6929个赞
知道大有可为答主
回答量:4050
采纳率:50%
帮助的人:1623万
展开全部
第二个窗体中,你肯定没有用线程。
如果倒计时,不是一个线程,那么它在执行时,就和那个窗口是一个线程。你把这个计时放在了窗体系的显示之前了,这样,当然会是等倒计时结束才会显示窗体。

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

下边是倒计时的那个窗体。
------------------------------------------------------------------------------------------------
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);
}

}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式