이 기사에서는 일반적으로 사용되는 Microsoft Word, Borland JBuilder 등과 같은 프로그램이 실행될 때 Java의 시작 창 효과에 대해 자세히 설명합니다. 이러한 창을 정보 창이라고 합니다. 정보 창을 사용하면 사용자가 소프트웨어의 기본 인터페이스가 나타날 때까지 기다리기 전에 일정 시간 동안 소프트웨어의 실행 상태를 알 수 있다는 장점이 있습니다. 이 예에서는 프로그램이 열리면 정보 창이 먼저 표시되고 "대기 0"이 될 때까지 창에서 카운트다운된 다음 창이 닫히고 프로그램의 기본 창이 표시됩니다.
이 기능의 주요 구현 방법은 다음과 같습니다.
일반적으로 대부분의 정보 창에는 제목 표시줄이 없으므로 JFrame 클래스를 상속하여 정보 창을 구현할 수 없습니다. 간단한 방법은 JWindow 클래스를 상속하여 구현하는 것입니다(물론 Window 클래스를 상속하는 것도 가능합니다. 그러나 한 가지 원칙은 스윙에서 인터페이스 클래스를 사용하는 것입니다. 또한 이 예제에서는 java.awt 패키지의 MediaTracker 클래스를 사용합니다. 이 클래스를 사용하면 프로그램에서 사용할 그림을 더 잘 관리할 수 있고 그림과 인터페이스가 동시에 표시되도록 할 수 있어 창이 끝난 후에도 오랫동안 그림을 표시하는 단점을 피할 수 있다는 장점이 있습니다. 표시됩니다.
구체적인 단계는 다음과 같습니다:
1. 새 프로젝트를 만들고 이름을 JSpleshWindowDemo로 지정하고 다른 설정을 기본값으로 유지합니다.
2. 새 응용 프로그램을 만들고 이름을 JSpleshWindowDemo로 지정하고 기본 창의 이름을 MainFrame으로 지정하고 기본 창 제목의 이름을 JSpleshWindowDemo로 지정합니다.
3. 먼저 정보창에 대한 코드를 작성해 보겠습니다. java.swing.JWindow 클래스를 상속하는 새 클래스 SpleshWindow.java를 만듭니다. 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 ); //일련 번호 0을 사용하여 이미지를 MediaTracker 객체에 넣습니다. 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 이 java.awt.Component 메서드를 재정의합니다*/super.paint(g);//(logoImg!=null)g.drawImage( logoImg, 0, 0 , this );//( statusStr!=null ){g.setColor(Color.red);g.drawString( statusStr , 240, getSize().height-250 );}}7. MainFrame 클래스를 작성하고, java.lang.Runnable 인터페이스를 구현하고, 새 속성을 정의합니다. 설정은 다음과 같습니다.
개인 SpleshWindow spleshWindow=null;
8. MainFrame 클래스의 초기화 메소드에 정보창을 실행하기 위한 코드를 추가합니다. 구현 코드는 다음과 같습니다.
private void jbInit()에서 예외 발생 {//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") );// 스플래시 windowspleshWindow.setStatus에서 상태 문자열을 설정할 수 있습니다. ( "대기 중 "+(35-(long)(System.currentTimeMillis()/1000)+(long)(x/1000)) );}//( 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()이 아직 구현되지 않았습니다.")을 표시합니다. ;}