Este artigo detalha o efeito da janela de inicialização do Java quando um programa está em execução, como o comumente usado Microsoft Word, Borland JBuilder, etc. Essas janelas são chamadas de janelas de informações. A vantagem de utilizar a janela de informações é que o usuário pode saber o status de execução do software por um período de tempo antes de aguardar o aparecimento da interface principal do software. Este exemplo irá demonstrar como implementar uma janela de informações Quando o programa é aberto, a janela de informações é exibida primeiro e faz uma contagem regressiva na janela até "esperar 0", depois a janela é fechada e a janela principal do programa é exibida.
Os principais métodos de implementação desta função são os seguintes:
De modo geral, a maioria das janelas de informações não possui uma barra de título, portanto, a janela de informações não pode ser implementada herdando a classe JFrame. Uma maneira simples é implementá-la herdando a classe JWindow (é claro, herdar a classe Window também é possível, mas um princípio é tentar usar classes de interface em swing). Além disso, este exemplo usa a classe MediaTracker no pacote java.awt. A vantagem de utilizar esta classe é que ela pode gerenciar melhor as imagens a serem utilizadas no programa, além de garantir que as imagens e a interface sejam exibidas ao mesmo tempo, evitando a desvantagem de exibir as imagens muito depois de a janela ser aberta. exibido.
As etapas específicas são as seguintes:
1. Crie um novo projeto, nomeie-o JSpleshWindowDemo e mantenha as outras configurações como padrão.
2. Crie um novo aplicativo, nomeie-o como JSpleshWindowDemo, nomeie a janela principal como MainFrame e nomeie o título da janela principal como JSpleshWindowDemo.
3. Vamos escrever primeiro o código da janela de informações. Crie uma nova classe SpleshWindow.java, que herda a classe java.swing.JWindow. Na classe SpleshWindow, defina novas propriedades com o seguinte código:
private String statusStr=null; //Informações a serem exibidas na janela de informações private Image logoImg=null;
4. Adicione código ao método de construção, carregue a imagem e inicialize o formulário. O código de implementação é o seguinte:
public SpleshWindow(JFrame Owner) { //Tome como parâmetro o objeto JFrame, que pode ser a interação entre a janela de informações e a janela principal super(owner ); getSystemResource("images/splesh.jpg ") );//Aguarde o carregamento da imagem java.awt.MediaTracker tracker=new java.awt.MediaTracker( this ); //Cria um objeto MediaTracker tracker.addImage( logoImg , 0 ); //Coloca a imagem no objeto MediaTracker com o número de série 0 try{ //Aguarda até que a imagem seja carregada tracker.waitForAll();}catch ( InterruptedException e ) {e .printStackTrace();}//Define a posição de exibição do formulário de informações na tela setLocation( getToolkit().getScreenSize().width/2 - logoImg.getWidth(this)/2 , getToolkit().getScreenSize().height/2 -logoImg.getHeight(this)/2 );setSize( logoImg.getWidth(this ), logoImg.getHeight(this) ); // Definir tamanho da janela}5. Escreva um método para definir as informações de exibição. O código é o seguinte:
public void setStatus( String status ){statusStr=status;paint( getGraphics() ); // Redesenhe a janela para atualizar as informações de exibição na janela de informações}6. Redefina o método paint() para desenhar imagens e exibir informações.
public void paint(Graphics g) {/**@todo Substitua este método java.awt.Component*/super.paint(g);//Desenhe a imagem if (logoImg!=null)g.drawImage( logoImg, 0, 0 , this );//Desenha e exibe informações if ( statusStr!=null ){g.setColor(Color.red);g.drawString( statusStr , 240, getSize().height-250 );}}7. Escreva a classe MainFrame, implemente a interface java.lang.Runnable e defina novos atributos. As configurações são as seguintes:
private SpleshWindow spleshWindow=null;
8. Adicione o código para executar a janela de informações ao método de inicialização da classe MainFrame. O código de implementação é o seguinte:
private void jbInit() lança exceção {//setIconImage(Toolkit.getDefaultToolkit().createImage(MainFrame.class.getResource("[Seu ícone]")));contentPane = (JPanel) this.getContentPane();contentPane.setLayout (borderLayout1);this.setSize(nova dimensão(400, 300));this.setTitle("JSpleshWindowDemo");//Crie um novo thread e execute a janela de informações Thread t = new Thread(this);t.start();//Aguarde a janela de informações exibir try{ t.join( );}catch ( InterruptedException e ){e.printStackTrace() ;}// Exibe mensagem para a janela de informações long x=System.currentTimeMillis();while ( System.currentTimeMillis()-x <35000 ){System.out.print( "Waiting "+(35000-System.currentTimeMillis()+x+" /r") );// você pode definir a string de status em splash windowspleshWindow.setStatus ( "Aguardando "+(35-(longo)(System.currentTimeMillis()/1000)+(longo)(x/1000)) );}//Fecha a janela de informações if ( spleshWindow!=null ) {spleshWindow.dispose();spleshWindow=null;}}9. Escreva o método run() da classe MainFrame da seguinte forma:
public void run() {//Cria uma nova janela de informações e exibe spleshWindow=new SpleshWindow( this );spleshWindow.show();// throw new java.lang.UnsupportedOperationException("Method run() ainda não implementado.") ;}