有些软件的启动页面
比如说Jbuilder eclipse什么的刚启动时出现的那个页面
是怎么做的?
我想做一个类似的界面

解决方案 »

  1.   

    哥们,分拿来吧!
    /**
    Java Application启动画面的制作
    现象:   JBuilder启动时有一个启动画面,在Jbuilder所有的初始化工作都完成之后,启动画面消失,继而JBuilder可以开始使用。   解决方案:   1、新建一个启动画面Window类   java.awt.Window windowSplash;   2、调用prepareSplash()函数,初始化启动界面   private void prepareSplash() 
     { 
        Toolkit toolkit = Toolkit.getDefaultToolkit(); 
        windowSplash = new Window( this ); 
        Image image = toolkit.getImage( "images" + File.separator + "splash.gif" ); 
        ImageCanvas canvas = new ImageCanvas( image ); 
        windowSplash.add( canvas, "Center" ); 
        Dimension scmSize = toolkit.getScreenSize(); 
        int imgWidth = image.getWidth( this ); 
        int imgHeight = image.getHeight( this ); 
        windowSplash.setLocation( scmSize.width/2 - (imgWidth/2), scmSize.height/2 - (imgHeight/2) ); 
       windowSplash.setSize( imgWidth, imgHeight ); 
      }   3、在Application的JFrame类(主界面)中调用startSplash(),显示启动界面,然后初试化JFrame的各个可视化组件,初始化后台数据库等(如数据库的连接)   private void startSplash() 
      { 
        windowSplash.setVisible( true ); 
       windowSplash.toFront(); 
      }   4、在所有的初始化工作完成之后,调用stopSplash()函数,停止显示启动画面   private void stopSplash() 

       windowSplash.dispose(); 
     } 
    */import java.awt.*;
    import javax.swing.*;
    import java.io.File;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;public class StartUpMenu implements ActionListener {
      Window windowSplash;
      JFrame f;
      boolean flag = true;
      public StartUpMenu() {
        f = new JFrame("Hello");
        f.setSize(400, 300);
        prepareSplash(); //加载图片
        startSplash(); //显示启动图片
        try {
          Thread.sleep(5000);
        }
        catch (InterruptedException ex) {
          ex.printStackTrace();
        }
        JButton showBG = new JButton("显示宝库");
        showBG.addActionListener(this);
        f.getContentPane().add(showBG);    stopSplash(); //关闭启动图像
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      }  public static void main(String[] args) {
        StartUpMenu startUpMenu1 = new StartUpMenu();
      }  private void prepareSplash() {
        Toolkit toolkit = Toolkit.getDefaultToolkit();
        windowSplash = new Window(f);
        Image image = toolkit.getImage("./images" + File.separator + "drugbox.jpg");
        ImageCanvas canvas = new ImageCanvas(image);
        //windowSplash.add(canvas, "Center");
        windowSplash.add(canvas, BorderLayout.CENTER);
        Dimension scmSize = toolkit.getScreenSize();
        int imgWidth = image.getWidth(f);
        int imgHeight = image.getHeight(f);
        windowSplash.setLocation(scmSize.width / 2 - (imgWidth / 2),
                                 scmSize.height / 2 - (imgHeight / 2));
        windowSplash.setSize(imgWidth, imgHeight);
      }  private void startSplash() {
        windowSplash.setVisible(true);
        windowSplash.toFront();
      }  private void stopSplash() {
        windowSplash.dispose();
      }  public void actionPerformed(ActionEvent actionEvent) {
        if(flag){
          windowSplash.setVisible(true);
          flag = false;
        }
        else{
          windowSplash.dispose();
          flag = true;
        }  }
    }
    -----------------------------------------------------------------
    import java.awt.Canvas;
    import java.awt.Image;
    import java.awt.MediaTracker;
    import java.awt.Graphics;
    import java.awt.Dimension;/**
     * <p>Title: </p>
     * <p>Description: </p>
     * <p>Copyright: Copyright (c) 2004</p>
     * <p>Company: </p>
     * @author Victor
     * @version 1.0
     */class ImageCanvas extends Canvas
    {
        private Image image;
        public ImageCanvas( Image image )
        {
            MediaTracker mt = new MediaTracker( this );
            mt.addImage( image, 0 );
            try{
                mt.waitForID(0);
            }
            catch( Exception e)
            {}
            this.image = image;
        }
        public void paint( Graphics g ) {
            g.drawImage( image, 0, 0, this );
        }
        public void update( Graphics g ) {
            paint( g );
        }
        public Dimension getPreferedSized() {
            return new Dimension( image.getWidth(this), image.getHeight(this) );
        }
    }
      

  2.   

    谢谢programdolt
    还想问问
    是不是java做的程序的启动画面都是这么做的?
      

  3.   

    拿applet或swing组件不能做到么,还是他们有什么缺点
      

  4.   

    也可以在java.awt.Window 中添加JLabel或JButton组件,组件上显示图片,取代Canvas。