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();
}
}
}
ขั้นตอนสำคัญ
- extends JWindow (ไม่ใช่ JFrame)
- โหลดรูปด้วย Toolkit.getDefaultToolkit().getImage()
- ตั้งขนาดและตำแหน่งกึ่งกลางหน้าจอ
- Override paint(Graphics g) วาดรูป
- ใช้ Thread.sleep() หน่วงเวลา แล้ว dispose() ปิด
ข้อดีของ JWindow เป็น Splash
- ไม่มี title bar ดูสะอาด
- เบา (lightweight) โหลดเร็ว
- ควบคุมการแสดง/ปิดได้เต็มที่
ผลลัพธ์
หน้าต่าง splash แสดงรูปภาพ logo.jpg อยู่กลางจอ 10 วินาที แล้วปิดอัตโนมัติ