这是我的第三个问题。请再帮忙......我想在我的小程序上放一个闪屏。在这样做时,我使用了JWindow组件。我已经将它用于为我的独立java应用程序创建启动画面,所以我认为它也适用于applet。问题是,它不起作用。 Jwindow可用于applet吗?有没有更好的方法来实现这一目标? tnx很多!
我在applet的start方法中实例化了LoadingScreen对象? 这是代码:
public class LoadingScreen extends JWindow{
private static final long serialVersionUID = 1L;
private Image image1;
private ImageIcon icon1;
public LoadingScreen(){
//image = Toolkit.getDefaultToolkit().getImage("WebContent/images/loadbar.gif");
image1 = getImage(getCodeBase(), "images/loadbar.gif");
icon1= new ImageIcon(image1);
setSize(icon1.getIconWidth(), icon1.getIconHeight());
setLocationRelativeTo(null);
setVisible(true);
try{
//Make JWindow appear for 5 seconds before disappear
Thread.sleep(5000);
dispose();
System.exit(0);
}catch(Exception exception){
exception.printStackTrace();
}
}
public void paint(Graphics g){
super.paint(g);
g.drawImage(image1,0,0,null);
}
}
更新! 问题解决了。调用applet start方法中的静态Thread.sleep方法可以阻止资源(图像)加载...这就是它没有显示的原因。通过创建一个单独的计时器线程来进行实际计数来解决这个问题...就这样每个人都知道......:)
答案 0 :(得分:0)
为什么要覆盖paint(...)方法来显示图像?将ImageIcon添加到JLabel并将标签添加到窗口。然后你只需使用pack()方法来调整窗口大小。
我不知道JWindow是否有效。可能大小为零,因为在设置大小时尚未加载图像。
或者,您可以尝试使用未修饰的JFrame。
答案 1 :(得分:0)
问题解决了。调用applet start方法中的静态Thread.sleep方法可以阻止资源(图像)加载...这就是它没有显示的原因。通过创建一个单独的计时器线程来进行实际计数来解决这个问题...就这样每个人都知道......:)