Многие из нас видели заставки типа тех, которые возникают при запуске MS Word-а и других известных программ. Они называются заставками (splash screens). Не смотря на то, что должны быть другие пути создания таких экранов в Java, эта статья продемонстрирует одну простую технику.
Обычная заставка имеет две интересные характеристики:
1. Она не имеет фрейма окна
2. Она исчезает сама по себе
До того, как мы рассмотрим небольшой кусочек кода, давайте подумаем над этими двумя требованиями с точки зрения программирования на Java. Осторожный взгляд на пункт 1 откроет нам, что мы не можем использовать java.awt.Frame поскольку этот класс выводит фрейм окна. Так, а как мы тогда должны нарисовать эту заставку?
Просто давайте, используем java.awt.Window. Window не рисует дополнительные вещи, типа заголовка окна и границ окна. Так что, он отвечает нашим требованиям. Ну, пункт 2 вообще простой. Все, что нам нужно, это показать окно на некоторое время, а затем закрыть его.
Теперь пришло время для исходного кода, взгляните:
import java.awt.*;
/** Splash screen demo. */
public class SplashScreenDemo extends Window {
/** Constructor. */
public SplashScreenDemo() {
// Create a dummy parent frame
super(new Frame());
// Initialize
init();
}
/** Initialize the splash screen. */
public void init() {
// Set background
Color bg = new Color(255, 255, 150);
setBackground(bg);
// Create dummy components for the splash screen
Font fb = new Font("Arial", Font.BOLD, 14);
Font fi = new Font("Arial", Font.BOLD | Font.ITALIC, 14);
Font fn = new Font("Arial", Font.PLAIN, 12);
Label lbl1 = new Label("Splash Demo V1.0", Label.CENTER);
lbl1.setFont(fb);
Label lbl2 = new Label("by Technobuff.com", Label.CENTER);
lbl2.setFont(fi);
Label lbl3 = new Label("Home: http://www.technobuff.com/",
Label.CENTER);
lbl3.setFont(fn);
// Add the components to the window
add(lbl1, BorderLayout.NORTH);
add(lbl2, BorderLayout.CENTER);
add(lbl3, BorderLayout.SOUTH);
// Pack window
pack();
// Set the location near the center of the screen
Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension dSplash = getPreferredSize();
Dimension dScreen = toolkit.getScreenSize();
int x = (dScreen.width / 2) - (dSplash.width / 2);
int y = (dScreen.height / 2) - (dSplash.height / 2);
setLocation(x, y);
// Show
setVisible(true);
}
/** Closes the splash screen. */
public void close() {
setVisible(false);
dispose();
}
/** Main. */
public static void main(String[] args) {
// Show the splash screen
SplashScreenDemo splash = new SplashScreenDemo();
try {
// Display the screen for sometime
Thread.sleep(5 * 1000);
}
catch(InterruptedException e) {
}
// Close the splash screen
splash.close();
// Demo over, exit now
System.exit(0);
}
}
В приведенной программе, метод main() создает представление SplashScreenDemo, который произошел от java.awt.Window. Конструктор создает невидимый Frame в качестве родителя этого окна. Затем он инициализирует заставку вызовом метода init(). Метод init() устанавливает значения нескольких меток (Labels) и добавляет их на экран. Этот метод также имеет простую логику и выводит окно в центр экрана. В заключении он показывает заставку. Метод main() закрывается через несколько секунд.
Красиво и просто, не правда ли? Но такой метод стоит стороной от всего остального пользовательского интерфейса. Взамен он имеет простую заставку и не должен содержать прикольную графику. Как только вы добавите графику, то потрудитесь создать и нормальный фрейм. А так просто покажите и спрячьте его.
Обычная заставка имеет две интересные характеристики:
1. Она не имеет фрейма окна
2. Она исчезает сама по себе
До того, как мы рассмотрим небольшой кусочек кода, давайте подумаем над этими двумя требованиями с точки зрения программирования на Java. Осторожный взгляд на пункт 1 откроет нам, что мы не можем использовать java.awt.Frame поскольку этот класс выводит фрейм окна. Так, а как мы тогда должны нарисовать эту заставку?
Просто давайте, используем java.awt.Window. Window не рисует дополнительные вещи, типа заголовка окна и границ окна. Так что, он отвечает нашим требованиям. Ну, пункт 2 вообще простой. Все, что нам нужно, это показать окно на некоторое время, а затем закрыть его.
Теперь пришло время для исходного кода, взгляните:
import java.awt.*;
/** Splash screen demo. */
public class SplashScreenDemo extends Window {
/** Constructor. */
public SplashScreenDemo() {
// Create a dummy parent frame
super(new Frame());
// Initialize
init();
}
/** Initialize the splash screen. */
public void init() {
// Set background
Color bg = new Color(255, 255, 150);
setBackground(bg);
// Create dummy components for the splash screen
Font fb = new Font("Arial", Font.BOLD, 14);
Font fi = new Font("Arial", Font.BOLD | Font.ITALIC, 14);
Font fn = new Font("Arial", Font.PLAIN, 12);
Label lbl1 = new Label("Splash Demo V1.0", Label.CENTER);
lbl1.setFont(fb);
Label lbl2 = new Label("by Technobuff.com", Label.CENTER);
lbl2.setFont(fi);
Label lbl3 = new Label("Home: http://www.technobuff.com/",
Label.CENTER);
lbl3.setFont(fn);
// Add the components to the window
add(lbl1, BorderLayout.NORTH);
add(lbl2, BorderLayout.CENTER);
add(lbl3, BorderLayout.SOUTH);
// Pack window
pack();
// Set the location near the center of the screen
Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension dSplash = getPreferredSize();
Dimension dScreen = toolkit.getScreenSize();
int x = (dScreen.width / 2) - (dSplash.width / 2);
int y = (dScreen.height / 2) - (dSplash.height / 2);
setLocation(x, y);
// Show
setVisible(true);
}
/** Closes the splash screen. */
public void close() {
setVisible(false);
dispose();
}
/** Main. */
public static void main(String[] args) {
// Show the splash screen
SplashScreenDemo splash = new SplashScreenDemo();
try {
// Display the screen for sometime
Thread.sleep(5 * 1000);
}
catch(InterruptedException e) {
}
// Close the splash screen
splash.close();
// Demo over, exit now
System.exit(0);
}
}
В приведенной программе, метод main() создает представление SplashScreenDemo, который произошел от java.awt.Window. Конструктор создает невидимый Frame в качестве родителя этого окна. Затем он инициализирует заставку вызовом метода init(). Метод init() устанавливает значения нескольких меток (Labels) и добавляет их на экран. Этот метод также имеет простую логику и выводит окно в центр экрана. В заключении он показывает заставку. Метод main() закрывается через несколько секунд.
Красиво и просто, не правда ли? Но такой метод стоит стороной от всего остального пользовательского интерфейса. Взамен он имеет простую заставку и не должен содержать прикольную графику. Как только вы добавите графику, то потрудитесь создать и нормальный фрейм. А так просто покажите и спрячьте его.