Java가 소프트웨어 실행 시 정보 창을 시작하는 방법
이 기능의 주요 구현 방법은 다음과 같습니다.
일반적으로 대부분의 정보 창은 제목 표시줄이 없기 때문에 정보 창은 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.");
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.