В этой статье подробно описывается эффект окна запуска Java при запуске программы, например часто используемых Microsoft Word, Borland JBuilder и т. д. Такие окна называются информационными окнами. Преимущество использования информационного окна заключается в том, что пользователь может узнать о рабочем состоянии программного обеспечения в течение определенного периода времени, прежде чем дождаться появления основного интерфейса программного обеспечения. В этом примере будет показано, как реализовать информационное окно. Когда программа открыта, сначала отображается информационное окно и ведется обратный отсчет до «ожидания 0», затем окно закрывается и отображается главное окно программы.
Основные методы реализации этой функции следующие:
Вообще говоря, большинство информационных окон не имеют строки заголовка, поэтому информационное окно не может быть реализовано путем наследования класса JFrame. Простой способ — реализовать его путем наследования класса JWindow (конечно, наследование класса Window также возможно. но один из принципов — попытаться использовать классы интерфейса в разгаре). Кроме того, в этом примере используется класс MediaTracker в пакете java.awt. Преимущество использования этого класса заключается в том, что он позволяет лучше управлять изображениями, которые будут использоваться в программе, а также может гарантировать, что изображения и интерфейс отображаются одновременно, избегая недостатка отображения изображений спустя долгое время после открытия окна. отображается.
Конкретные шаги заключаются в следующем:
1. Создайте новый проект, назовите его JSpleshWindowDemo и оставьте остальные настройки по умолчанию.
2. Создайте новое приложение, назовите его JSpleshWindowDemo, назовите главное окно MainFrame и назовите заголовок главного окна JSpleshWindowDemo.
3. Давайте сначала напишем код информационного окна. Создайте новый класс SpleshWindow.java, который наследует класс java.swing.JWindow. В классе SpleshWindow определите новые свойства с помощью следующего кода:
Private String statusStr=null; //Информация, которая будет отображаться в информационном окне. Private Image logoImg=null //Отображение изображения в информационном окне;
4. Добавьте код в метод построения, загрузите изображение и инициализируйте форму. Код реализации выглядит следующим образом:
public SpleshWindow(JFrame Owner) { //Возьмем объект JFrame в качестве параметра, который может быть взаимодействием между информационным окном и главным окном super( Owner ); // Загрузите изображение logoImg=getToolkit().getImage( ClassLoader. getSystemResource("images/splesh.jpg") );//Подождите, пока загрузится изображение java.awt.MediaTracker tracker=new java.awt.MediaTracker( this ); //Создаем объект MediaTracker tracker.addImage( logoImg , 0 ); //Помещаем изображение в объект MediaTracker с серийным номером 0 try{ //Подождем, пока изображение загрузится tracker.waitForAll();}catch ( InterruptedException e ) {e .printStackTrace();}//Установим положение отображения информационной формы на экране setLocation( getToolkit().getScreenSize().width/2 - logoImg.getWidth(this)/2 , getToolkit().getScreenSize().height/2 -logoImg.getHeight(this)/2 );setSize( logoImg.getWidth(this ), logoImg.getHeight(this) ); // Устанавливаем размер окна}5. Напишите метод для установки отображаемой информации. Код выглядит следующим образом:
public void setStatus( String status ){statusStr=status;paint( getGraphics() ); // Перерисовываем окно, чтобы обновить отображаемую информацию в информационном окне};6. Сбросьте метод Paint() для рисования изображений и отображения информации. Код выглядит следующим образом:
public void Paint(Graphics g) {/**@todo Переопределить этот метод java.awt.Component*/super.paint(g);//Нарисовать изображение if (logoImg!=null)g.drawImage( logoImg, 0, 0 , this );//Рисуем и отображаем информацию if ( statusStr!=null ){g.setColor(Color.red);g.drawString( statusStr , 240, getSize().height-250 );}}7. Напишите класс MainFrame, реализуйте интерфейс java.lang.Runnable и определите новые атрибуты. Настройки следующие:
частный SpleshWindow spleshWindow = null;
8. Добавьте код запуска информационного окна в метод инициализации класса MainFrame. Код реализации следующий:
Private void jbInit() выдает исключение {//setIconImage(Toolkit.getDefaultToolkit().createImage(MainFrame.class.getResource("[Ваш значок]")));contentPane = (JPanel) this.getContentPane();contentPane.setLayout (borderLayout1);this.setSize(new Dimension(400, 300));this.setTitle("JSpleshWindowDemo");//Создаем новый поток и запускаем информационное окно Thread t = new Thread(this);t.start();//Подождем, пока отобразится информационное окно try{ t.join( );}catch ( InterruptedException e ){e.printStackTrace() ;}// Отображение сообщения в информационном окне long x=System.currentTimeMillis(); while ( System.currentTimeMillis()-x <35000 ){System.out.print( "Ожидание "+(35000-System.currentTimeMillis()+x+" /r") );// вы можете установить строку состояния в заставке windowspleshWindow.setStatus ( "Ожидание "+(35-(long)(System.currentTimeMillis()/1000)+(long)(x/1000)) );}//Закрываем информационное окно if ( spleshWindow!=null ) {spleshWindow.dispose();spleshWindow=null;}}9. Напишите метод run() класса MainFrame следующим образом:
public void run() {//Создаем новое информационное окно и отображаем spleshWindow=new SpleshWindow( this );spleshWindow.show();// выбрасываем новое java.lang.UnsupportedOperationException("Метод run() еще не реализован.") ;}