Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

สร้าง Splash Screen ด้วย JWindow ใน Java

JWindow เป็นคอนเทนเนอร์ที่แสดงได้ทุกที่บนเดสก์ท็อป ไม่มี Title bar, ปุ่มจัดการหน้าต่าง เหมือน JFrame มี JRootPane เป็นลูกเดียว ใช้เป็น Splash Screen ที่แสดงตอนเปิดโปรแกรม แล้วหายเองหลังไม่กี่วินาที

ตัวอย่างโค้ด Splash Screen


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

public class CreateSplashScreen extends JWindow {
    Image splashScreen;
    ImageIcon imageIcon;
    
    public CreateSplashScreen() {
        // โหลดรูปภาพ
        splashScreen = Toolkit.getDefaultToolkit().getImage("logo.jpg");
        
        // สร้าง ImageIcon จาก Image
        imageIcon = new ImageIcon(splashScreen);
        
        // กำหนดขนาด JWindow ตามรูป
        setSize(imageIcon.getIconWidth(), imageIcon.getIconHeight());
        
        // จัดตำแหน่งกึ่งกลางหน้าจอ
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        int x = (screenSize.width - getSize().width) / 2;
        int y = (screenSize.height - getSize().height) / 2;
        setLocation(x, y);
        
        // แสดง
        setVisible(true);
    }
    
    // วาดรูปบน 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 {
            // แสดง 10 วินาที
            Thread.sleep(10000);
            splash.dispose(); // ปิด splash
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

ขั้นตอนสำคัญ

  1. extends JWindow (ไม่ใช่ JFrame)
  2. โหลดรูปด้วย Toolkit.getDefaultToolkit().getImage()
  3. ตั้งขนาดและตำแหน่งกึ่งกลางหน้าจอ
  4. Override paint(Graphics g) วาดรูป
  5. ใช้ Thread.sleep() หน่วงเวลา แล้ว dispose() ปิด

ข้อดีของ JWindow เป็น Splash

  • ไม่มี title bar ดูสะอาด
  • เบา (lightweight) โหลดเร็ว
  • ควบคุมการแสดง/ปิดได้เต็มที่

ผลลัพธ์

หน้าต่าง splash แสดงรูปภาพ logo.jpg อยู่กลางจอ 10 วินาที แล้วปิดอัตโนมัติ