'Prograss Bar'에 해당되는 글 1건
Splash Screen에 PrograssBar 만들기! :: 2007/03/25 22:18
한국 썬 개발자 네트워크 여기저기를 들쑤시고 다니던 도중에,
Splash Screen 에 대한 소스를 발견했습니다.
Splash Screen 이란, 어떤 프로그램을 처음 실행하였을 경우 로딩 시간이 길 경우를 대비하여 미리 이미지를 띄워 프로그램이 로딩 중이거나 로딩 상황을 알리는데 사용하는데요.
뭐 예를 들어 이클립스를 처음 실행하고자 하는 경우 다음과 같은 화면이 뜨죠.

사실 지금 캡쳐화면에선 보이지 않지만, 이미지 아래쪽에 PrograssBar가 떠서 로딩 상황을 알리죠.
그 소스에서는 그냥 이미지 한 가운데 사각형을 그리면서 색깔만 바꿔주는 예제였는데요,
제 입맛에 맞게 아래쪽에 PrograssBar 를 그려주는 걸로 바꿔 봤습니다.
소스는 다음과 같습니다.
import javax.swing.*;
import java.awt.*;
import java.util.*;
public class ExtendedSplash {
public static void main(String args[]) {
Runnable runner = new Runnable() {
public void run() {
// 생성된 Splash Screen을 반환한다.
SplashScreen splash = SplashScreen.getSplashScreen();
// Splash Image를 Graphics2D의 인스턴스로 받는다.
Graphics2D g = splash.createGraphics();
// Splash 된 Image의 사이즈를 구한다.
Dimension dim = splash.getSize();
// Image 하단에 그려질 PrograssBar 배경 사각형 그리기
g.setColor(Color.GRAY);
// (x좌표, y좌표: 그려질사각형의 높이만큼 뺀다, 너비, 높이)
g.fillRect(0, dim.height - 20, dim.width, 20);
// 현재 진행 상황에 맞춰 그려질 Prograss 사각형
g.setColor(Color.GREEN);
// i가 Splash Image의 너비에 다다를 때까지
// 12에서 10은 그려질 사각형의 너비, 2는 사각형간의 간격이다.
for (int i=0; i< dim.width; i += 12) {
g.fillRect(i, dim.height - 20, 10, 20);
splash.update();
// 0.5 초의 간격으로 사각형을 그린다
// 실제로 이 부분에 로딩에 따른 작업 간격을 설정해 주는 부분이다.
try {
Thread.sleep(500);
} catch (InterruptedException ignored) {
}
}
JFrame frame = new JFrame("Splash Me2");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel label = new JLabel("프로그램이 시작되었습니다~!", JLabel.CENTER);
frame.add(label, BorderLayout.CENTER);
frame.setSize(300, 95);
frame.setVisible(true);
}
};
EventQueue.invokeLater(runner);
}
}
실제로 중요한 부분은 굵은 글씨입니다.
워낙 간단한 소스라서 쉽게 이해 하실 줄로 믿습니다.
소스를 보면 Splash Screen으로 띄워 줄 이미지를 설정하는 부분이 없습니다.
이는 실행할 때 지정해 줘야 하는데요.
다음과 같이 실행하면 됩니다.
java -splash:MyImage.png ExtendedSplash
이것보다 보다 효과적인 방법은 manifest 파일로 관리하는 겁니다.
다음과 같은 manifest.mf 파일을 만듭니다.
Manifest-Version: 1.0
Main-Class: ExtendedSplash
SplashScreen-Image: MyImage.png
jar -mcvf manifest.mf Splash.jar HelloSplash*.class MyImage.png
java -jar Splash.jar
Splash Screen 으로 사용 가능한 이미지 포멧은 png, jpg, gif 등이라고 명시하고 있네요.
이 소스로 제가 만든 Splash Screen 입니다.
이미지의 모델은 제 여친입니다. ^^땀


Splash Screen의 PrograssBar 가 꽉차게 되면 프로그램이 시작됩니다.
원래 이미지에 PrograssBar 크기만큼의 영역을 더 잡아보려고 삽질을 해봤으나,
부족한 저의 실력으론 힘들더군요.
아예 이미지 하단에 처음부터 PrograssBar의 여유영역을 만들어주는것도 좋을 듯 합니다.
그럼 유용하게 사용하세요~^^



