Este artículo detalla el efecto de la ventana de inicio de Java cuando se ejecuta un programa, como Microsoft Word, Borland JBuilder, etc., de uso común. Estas ventanas se denominan ventanas de información. La ventaja de utilizar la ventana de información es que el usuario puede conocer el estado de ejecución del software durante un período de tiempo antes de esperar a que aparezca la interfaz principal del software. Este ejemplo demostrará cómo implementar una ventana de información. Cuando se abre el programa, la ventana de información se muestra primero y hace una cuenta regresiva hasta "esperar 0", luego la ventana se cierra y se muestra la ventana principal del programa.
Los principales métodos de implementación de esta función son los siguientes:
En términos generales, la mayoría de las ventanas de información no tienen una barra de título, por lo que la ventana de información no se puede implementar heredando la clase JFrame. Una forma sencilla es implementarla heredando la clase JWindow (por supuesto, también es posible heredar la clase Ventana). pero un principio es intentar usar clases de interfaz en swing). Además, este ejemplo utiliza la clase MediaTracker en el paquete java.awt. La ventaja de usar esta clase es que puede administrar mejor las imágenes que se utilizarán en el programa y también puede garantizar que las imágenes y la interfaz se muestren al mismo tiempo, evitando la desventaja de mostrar las imágenes mucho después de que se abre la ventana. desplegado.
Los pasos específicos son los siguientes:
1. Cree un nuevo proyecto, asígnele el nombre JSpleshWindowDemo y mantenga otras configuraciones como predeterminadas.
2. Cree una nueva aplicación, asígnele el nombre JSpleshWindowDemo, asigne a la ventana principal el nombre MainFrame y asigne al título de la ventana principal el nombre JSpleshWindowDemo.
3. Primero escribamos el código para la ventana de información. Cree una nueva clase SpleshWindow.java, que hereda la clase java.swing.JWindow. En la clase SpleshWindow, defina nuevas propiedades con el siguiente código:
private String statusStr=null //Información que se mostrará en la ventana de información private Image logoImg=null //Mostrar imagen en la ventana de información
4. Agregue código al método de construcción, cargue la imagen e inicialice el formulario. El código de implementación es el siguiente:
public SpleshWindow(propietario de JFrame) { //Toma el objeto JFrame como parámetro, que puede ser la interacción entre la ventana de información y la ventana principal super(propietario); // Carga la imagen logoImg=getToolkit().getImage( ClassLoader. getSystemResource("images/splesh.jpg "));//Espera a que se cargue la imagen java.awt.MediaTracker tracker=new java.awt.MediaTracker( this ); //Crea un objeto MediaTracker tracker.addImage( logoImg , 0 ); //Coloca la imagen en el objeto MediaTracker con el número de serie 0 try{ //Espera hasta que se cargue la imagen tracker.waitForAll();}catch ( InterruptedException e ) {e .printStackTrace();}//Establece la posición de visualización del formulario de información en la pantalla setLocation( getToolkit().getScreenSize().width/2 - logoImg.getWidth(this)/2 , getToolkit().getScreenSize().height/2 -logoImg.getHeight(this)/2 );setSize( logoImg.getWidth(this ), logoImg.getHeight(this) ); // Establecer tamaño de ventana}5. Escriba un método para configurar la información de visualización. El código es el siguiente:
public void setStatus( String status ){statusStr=status;paint( getGraphics() ); Redibujar la ventana para actualizar la información de visualización en la ventana de información}6. Restablezca el método paint () para hacer dibujos y mostrar información. El código es el siguiente:
public void paint(Graphics g) {/**@todo Anula este método java.awt.Component*/super.paint(g);//Dibuja la imagen if (logoImg!=null)g.drawImage( logoImg, 0, 0, this);//Dibuja y muestra información if ( statusStr!=null ){g.setColor(Color.red);g.drawString( statusStr , 240, getSize().altura-250 );}}7. Escriba la clase MainFrame, implemente la interfaz java.lang.Runnable y defina nuevos atributos. La configuración es la siguiente:
ventana privada SpleshWindow spleshWindow=null;
8. Agregue el código para ejecutar la ventana de información al método de inicialización de la clase MainFrame. El código de implementación es el siguiente:
private void jbInit() lanza una excepción {//setIconImage(Toolkit.getDefaultToolkit().createImage(MainFrame.class.getResource("[Su icono]")));contentPane = (JPanel) this.getContentPane();contentPane.setLayout (borderLayout1);this.setSize(nueva Dimensión(400, 300));this.setTitle("JSpleshWindowDemo");//Crea un nuevo hilo y ejecuta la ventana de información Thread t = new Thread(this);t.start();//Espera a que se muestre la ventana de información try{ t.join( );}catch ( InterruptedException e ){e.printStackTrace() ;}// Mostrar mensaje en la ventana de información long x=System.currentTimeMillis(); while ( System.currentTimeMillis()-x <35000 ){System.out.print( "Waiting "+(35000-System.currentTimeMillis()+x+" /r") );// puedes configurar la cadena de estado en windowspleshWindow.setStatus ( "Esperando "+(35-(largo)(System.currentTimeMillis()/1000)+(largo)(x/1000)) );}//Cierra la ventana de información si (spleshWindow!=null) {spleshWindow.dispose();spleshWindow=null;}}9. Escriba el método run() de la clase MainFrame de la siguiente manera:
public void run() {//Crea una nueva ventana de información y muestra spleshWindow=new SpleshWindow( this );spleshWindow.show();// throw new java.lang.UnsupportedOperationException("Método run() aún no implementado.") ;}