Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Cách tạo màn hình chào (splash screen) dùng JWindow trong Java

JWindow là container có thể hiển thị bất cứ đâu trên màn hình desktop. Nó không có thanh tiêu đề (title bar), các nút quản lý cửa sổ như JFrame.

JWindow chứa JRootPane làm con duy nhất. contentPane có thể là cha của các con của JWindow. Giống như JFrame, JWindow là top-level container khác, bản chất là JFrame không trang trí (undecorated). Không có thanh tiêu đề, menu cửa sổ, v.v. JWindow thường dùng làm màn hình chào (splash screen) hiển thị khi ứng dụng khởi động và tự biến mất sau vài giây.

Ví dụ minh họa

import javax.swing.*; 
import java.awt.*; 

public class CreateSplashScreen extends JWindow { 
    Image splashScreen; 
    ImageIcon imageIcon; 
    
    public CreateSplashScreen() { 
        // Tải hình ảnh (điều chỉnh đường dẫn phù hợp)
        splashScreen = Toolkit.getDefaultToolkit().getImage("logo.jpg"); 
        
        // Tạo ImageIcon từ Image 
        imageIcon = new ImageIcon(splashScreen); 
        
        // Thiết lập kích thước JWindow theo kích thước ảnh 
        setSize(imageIcon.getIconWidth(), imageIcon.getIconHeight()); 
        
        // Lấy kích thước màn hình 
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 
        
        // Tính toạ độ x, y để JWindow nằm giữa màn hình 
        int x = (screenSize.width - getSize().width) / 2; 
        int y = (screenSize.height - getSize().height) / 2; 
        
        // Đặt vị trí mới cho JWindow 
        setLocation(x, y); 
        
        // Hiển thị JWindow 
        setVisible(true); 
    } 
    
    // Vẽ ảnh lên JWindow 
    public void paint(Graphics g) { 
        super.paint(g); 
        g.drawImage(splashScreen, 0, 0, this); 
    } 
    
    public static void main(String[] args) { 
        CreateSplashScreen splash = new CreateSplashScreen(); 
        try { 
            // Hiển thị splash screen 10 giây rồi đóng 
            Thread.sleep(10000); 
            splash.dispose(); 
        } catch(Exception e) { 
            e.printStackTrace(); 
        } 
    } 
}

Kết quả đầu ra

Một cửa sổ không viền hiển thị hình ảnh logo ở giữa màn hình trong 10 giây, sau đó tự động đóng.

Lưu ý thực tế

  • Đường dẫn ảnh trong ví dụ ("logo.jpg") cần điều chỉnh theo vị trí thực tế của file.
  • Trong ứng dụng thật, splash screen thường hiển thị trong khi khởi tạo tài nguyên nặng (kết nối DB, load config), không phải sleep cố định.
  • Có thể dùng SplashScreen class (Java 6+) cho splash screen sớm hơn, trước khi JVM khởi tạo hoàn toàn.