Java가 소프트웨어 실행 시 정보 창을 시작하는 방법

본고는 자바가 프로그램이 실행될 때의 시작 창 효과, 예를 들어 자주 사용하는 Microsoft Word, Borland JBuilder 등을 상세하게 기술한 창을 정보 창이라고 한다.정보 창을 사용하면 사용자가 소프트웨어 메인 인터페이스가 나타나기 전 일정 시간 동안 소프트웨어 운행 상태를 알 수 있다는 장점이 있다.이 예는 정보 창을 실현하는 방법을 보여 줍니다. 프로그램을 열 때 정보 창이 먼저 표시되고 창에 카운트다운을 합니다. "waiting 0"이 될 때까지 이 창을 닫고 프로그램의 메인 창을 보여 줍니다.
이 기능의 주요 구현 방법은 다음과 같습니다.
일반적으로 대부분의 정보 창은 제목 표시줄이 없기 때문에 정보 창은 JFrame 클래스를 계승하여 실현할 수 없다. 간단한 방법은 JWindow를 계승함으로써 실현된다.
클래스).그리고 이 예는java에 사용됩니다.awt 패키지의 MediaTracker 클래스입니다.이 종류를 사용하면 프로그램에서 사용할 그림을 더욱 잘 관리할 수 있을 뿐만 아니라 그림과 인터페이스를 동시에 표시할 수 있어 창이 표시된 지 오래된 후에야 그림을 표시하는 단점을 피할 수 있다.
구체적인 작업 단계는 다음과 같다.
1. Jsplesh Windows Demo라는 이름의 새 프로젝트를 만들고 다른 설정은 기본값으로 합니다.
2. 새 응용 프로그램을 만듭니다. 이름은 Jsplesh Window Demo이고 메인 창은 Main Frame이고 메인 창 제목은 Jsplesh Window Demo입니다.
3. 먼저 정보 창의 코드를 작성한다.새 클래스 Splesh Windows를 만듭니다.자바, 자바를 계승합니다.swing.JWindow 클래스.SpleshWindow 클래스에서 새 속성을 정의합니다. 코드는 다음과 같습니다.

private String statusStr=null; // 
private Image logoImg=null; // 

4. 구조 방법에 코드를 추가하고 그림을 불러오고 창을 초기화합니다. 코드는 다음과 같습니다.

public SpleshWindow(JFrame owner) { // JFrame  , 
super( owner );
//  
logoImg=getToolkit().getImage( ClassLoader.getSystemResource("images/splesh.jpg") );
//  
java.awt.MediaTracker tracker=new java.awt.MediaTracker( this ); // MediaTracker  
tracker.addImage( logoImg , 0 ); // MediaTracker  , 0
try{ // 
tracker.waitForAll();
}catch ( InterruptedException e ) {
e.printStackTrace();
}
//  
setLocation( getToolkit().getScreenSize().width/2 - logoImg.getWidth(this)/2 , getToolkit().getScreenSize().height/2 -
logoImg.getHeight(this)/2 );
setSize( logoImg.getWidth(this) , logoImg.getHeight(this) ); //  
}

5. 다음과 같이 표시 정보를 설정하는 방법을 작성합니다.

public void setStatus( String status ){
statusStr=status;
paint( getGraphics() ); //  
}

6. 그림을 그리고 정보를 표시하기 위해 paint () 메서드를 재설정합니다. 코드는 다음과 같습니다.

public void paint(Graphics g) {
/**@todo Override this java.awt.Component method*/
super.paint(g);
// 
if ( logoImg!=null )
g.drawImage( logoImg , 0 , 0 , this );
// 
if ( statusStr!=null ){
g.setColor(Color.red);
g.drawString( statusStr , 240 , getSize().height-250 );
}
}

7. MainFrame 클래스를 작성하여 자바를 실현한다.lang.Runnable 인터페이스를 사용하여 다음과 같이 새 속성을 정의합니다.

private SpleshWindow spleshWindow=null;

8. MainFrame 클래스의 초기화 방법에 정보 창을 실행하는 코드를 추가합니다. 구현 코드는 다음과 같습니다.

private void jbInit() throws Exception {
//setIconImage(Toolkit.getDefaultToolkit().createImage(MainFrame.class.getResource("[Your Icon]")));
contentPane = (JPanel) this.getContentPane();
contentPane.setLayout(borderLayout1);
this.setSize(new Dimension(400, 300));
this.setTitle("JSpleshWindowDemo");
// , 
Thread t = new Thread(this);
t.start();
//  
try{
t.join();
}catch ( InterruptedException e ){
e.printStackTrace() ;
}
//  
long x=System.currentTimeMillis();
while ( System.currentTimeMillis()-x <35000 )
{
System.out.print( "Waiting "+(35000-System.currentTimeMillis()+x+" \r") );
// you can set status string in splash window
spleshWindow.setStatus( "Waiting "+(35-(long)(System.currentTimeMillis()/1000)+(long)(x/1000)) );
}
// 
if ( spleshWindow!=null ) {
spleshWindow.dispose();
spleshWindow=null;
}
}

9. 다음과 같이 MainFrame 클래스의 run() 메서드를 작성합니다.

public void run() {
// 
spleshWindow=new SpleshWindow( this );
spleshWindow.show();
// throw new java.lang.UnsupportedOperationException("Method run() not yet implemented.");
}

좋은 웹페이지 즐겨찾기