package nicholas.swing;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
* <p>Title: JSplashWindow</p>
* <p>Description: start up window</p>
* <p>Copyright: Copyright (c) 2005</p>
* <p>Company: ColinSoft</p>
* @author Nicholas Lin
* @version beta
*/
public class JSplashWindow extends JWindow {
private static JSplashWindow csw;
private Image image;
private String user;
private String lab;
private int x1 = 155;
private int y1 = 220;
private int x2 = 250;
private int y2 = 235;
private DisposeAdapter da;
/**
*constructor
*/
private JSplashWindow(String u, String filename) {
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
ImageIcon icon = new ImageIcon(getClass().getResource(filename));
image = icon.getImage();
user = "";
user = u;
setAlwaysOnTop(true);
setSize(icon.getIconWidth(),icon.getIconHeight());
Dimension screen = getToolkit().getScreenSize();
setLocation((screen.width-getSize().width)/2, (screen.height-getSize().height)/2);
this.setVisible(true);
}
/**
*set close on click
*use as about dialog
*/
public void setCloseOnClick(boolean b) {
if(b) {
if(da==null)
da = new DisposeAdapter();
addMouseListener(da);
} else if(da!=null) {
this.removeMouseListener(da);
}
}
/**
*set the place where user name will be show
*/
public void setUserLocation(int x,int y) {
x1 = x;
y1 = y;
}
/**
*set the place where status will be show
*/
public void setStatusLocation(int x,int y) {
x2 = x;
y2 = y;
}
/**
*paint
*/
public void paint(Graphics g) {
g.drawImage(image,0,0,this);
g.drawString(user,x1,y1);
if(lab!=null)
g.drawString(lab,x2,y2);
}
/**
*set the status text
*/
public void setText(String lab) {
this.lab = lab;
repaint();
}
/**
*inner class
*to close the JWindow on click
*/
private class DisposeAdapter extends MouseAdapter {
public void mouseClicked(MouseEvent me) {
dispose();
}
}
/**
*static method to set the instance
*only once is premitted
*/
public static synchronized boolean setInstance(String user,String filename) {
if(csw==null) {
csw = new JSplashWindow(user,filename);
return true;
}
return false;
}
/**
*get the instance of JSplashWindow
*@return JSplashWindow
*/
public static synchronized JSplashWindow getInstance() {
return csw;
}
}
By Nicholas Lin @ Jan 7, 2005
本文地址:http://com.8s8s.com/it/it12041.htm