JAVA—咖啡馆

——欢迎访问rogerfan的博客,常来《JAVA——咖啡馆》坐坐,喝杯浓香的咖啡,彼此探讨一下JAVA技术,交流工作经验,分享JAVA带来的快乐!本网站部分转载文章,如果有版权问题请与我联系。

BlogJava 首页 新随笔 联系 聚合 管理
  447 Posts :: 145 Stories :: 368 Comments :: 0 Trackbacks
  1import java.awt.BorderLayout;
  2import java.awt.Color;
  3import java.awt.Cursor;
  4import java.awt.Dimension;
  5import java.awt.FlowLayout;
  6import java.awt.Font;
  7import java.awt.Point;
  8import java.awt.event.MouseAdapter;
  9import java.awt.event.MouseEvent;
 10import java.awt.event.MouseMotionAdapter;
 11import java.text.SimpleDateFormat;
 12import java.util.Date;
 13import java.util.HashMap;
 14import java.util.Map;
 15import javax.swing.BorderFactory;
 16import javax.swing.ImageIcon;
 17import javax.swing.JLabel;
 18import javax.swing.JOptionPane;
 19import javax.swing.JPanel;
 20import javax.swing.JScrollPane;
 21import javax.swing.JTextArea;
 22import javax.swing.SwingConstants;
 23import java.awt.Insets;
 24import java.awt.Toolkit;
 25import javax.swing.JDialog;
 26
 27public class VersionUtil
 28 private Map<String, String> feaMap = null;
 29 private Point oldP;//上一次坐标,拖动窗口时用
 30 private TipWindow tw = null;//提示框 
 31 private ImageIcon img = null;//图像组件
 32 private JLabel imgLabel = null//背景图片标签
 33 private JPanel headPan = null;
 34 private JPanel feaPan =null;
 35 private JPanel btnPan = null;
 36 private JLabel title = null;
 37 private JLabel head = null;
 38 private JLabel close = null;//关闭按钮
 39 private JTextArea feature = null
 40 private JScrollPane jfeaPan = null;
 41 private JLabel releaseLabel = null;
 42 private JLabel sure = null;
 43 private SimpleDateFormat sdf=null;
 44  
 45 {
 46  sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 47  feaMap = new HashMap<String, String>(); 
 48  feaMap.put("name""中国信息大学固定资产管理系统");
 49  feaMap.put("release", sdf.format(new Date()));
 50  feaMap.put("feature""1.开发环境:windows\n2.开发语言:java\n3.开发工具:Eclipse3.2\n4.数据库类型:SQL Server2005\n5.开发人员:花新昌\n6.联系方式:15210477080");
 51 }

 52 
 53 public VersionUtil() {
 54  init();   
 55  handle();
 56  tw.setAlwaysOnTop(true);    
 57  tw.setUndecorated(true);
 58  tw.setResizable(false);
 59  tw.setVisible(true);
 60  tw.run();
 61 }

 62 public void init(){   
 63  //新建300x220的消息提示框
 64  tw = new TipWindow(300220);  
 65  img = new ImageIcon("background.gif");
 66  imgLabel = new JLabel(img);  
 67  //设置各个面板的布局以及面板中控件的边界
 68  headPan = new JPanel(new FlowLayout(FlowLayout.CENTER, 00));
 69  feaPan = new JPanel(new FlowLayout(FlowLayout.CENTER, 00));
 70  btnPan = new JPanel(new FlowLayout(FlowLayout.CENTER, 00));
 71  title = new JLabel("欢迎使用本系统");
 72  head = new JLabel(feaMap.get("name"));
 73  close = new JLabel(" x");//关闭按钮
 74  feature = new JTextArea(feaMap.get("feature")); 
 75  jfeaPan = new JScrollPane(feature);
 76  releaseLabel = new JLabel("登录  " + feaMap.get("release"));  
 77  sure = new JLabel("确定");
 78  sure.setHorizontalAlignment(SwingConstants.CENTER);
 79  
 80  // 将各个面板设置为透明,否则看不到背景图片
 81  ((JPanel) tw.getContentPane()).setOpaque(false);
 82  headPan.setOpaque(false);
 83  feaPan.setOpaque(false);
 84  btnPan.setOpaque(false);
 85  
 86  //设置JDialog的整个背景图片
 87  tw.getLayeredPane().add(imgLabel, new Integer(Integer.MIN_VALUE));
 88  imgLabel.setBounds(00, img.getIconWidth(), img.getIconHeight());
 89  headPan.setPreferredSize(new Dimension(30060));
 90  
 91  //设置提示框的边框,宽度和颜色
 92  tw.getRootPane().setBorder(BorderFactory.createMatteBorder(1111, Color.gray));
 93  
 94  title.setPreferredSize(new Dimension(26026));
 95  title.setVerticalTextPosition(JLabel.CENTER);
 96  title.setHorizontalTextPosition(JLabel.CENTER);
 97  title.setFont(new Font("宋体", Font.PLAIN, 12));
 98  title.setForeground(Color.black);
 99
100  
101  close.setFont(new Font("Arial", Font.BOLD, 15));
102  close.setPreferredSize(new Dimension(2020));
103  close.setVerticalTextPosition(JLabel.CENTER);
104  close.setHorizontalTextPosition(JLabel.CENTER);
105  close.setCursor(new Cursor(12));
106  close.setToolTipText("关闭");
107
108  
109  head.setPreferredSize(new Dimension(25035));
110  head.setVerticalTextPosition(JLabel.CENTER);
111  head.setHorizontalTextPosition(JLabel.CENTER);
112  head.setFont(new Font("宋体", Font.PLAIN, 12));
113  head.setForeground(Color.blue);
114
115  
116  feature.setEditable(false);
117  feature.setForeground(Color.red);
118  feature.setFont(new Font("宋体", Font.PLAIN, 13));
119  feature.setBackground(new Color(184230172));
120  //设置文本域自动换行
121  feature.setLineWrap(true);
122
123  jfeaPan.setPreferredSize(new Dimension(25080));
124  jfeaPan.setBorder(null);
125  jfeaPan.setBackground(Color.black);
126  
127  releaseLabel.setForeground(Color.DARK_GRAY);
128  releaseLabel.setFont(new Font("宋体", Font.PLAIN, 12));
129  
130  //为了隐藏文本域,加个空的JLabel将他挤到下面去
131  JLabel jsp = new JLabel();
132  jsp.setPreferredSize(new Dimension(30025));
133  
134  sure.setPreferredSize(new Dimension(11030));
135  //设置标签鼠标手形
136  sure.setCursor(new Cursor(12));
137
138  headPan.add(title);
139  headPan.add(close);
140  headPan.add(head);
141  
142  feaPan.add(jsp);
143  feaPan.add(jfeaPan);
144  feaPan.add(releaseLabel);
145  
146  btnPan.add(sure);
147  
148  tw.add(headPan, BorderLayout.NORTH);
149  tw.add(feaPan, BorderLayout.CENTER);
150  tw.add(btnPan, BorderLayout.SOUTH);  
151 }

152 
153 public void handle() 
154  //为更新按钮增加相应的事件
155  sure.addMouseListener(new MouseAdapter() {
156   public void mouseClicked(MouseEvent e) {
157    JOptionPane.showMessageDialog(tw, "谢谢,再见");
158    tw.close();
159   }

160   public void mouseEntered(MouseEvent e) {
161    sure.setBorder(BorderFactory.createLineBorder(Color.gray));
162   }

163   public void mouseExited(MouseEvent e) {
164    sure.setBorder(null);
165   }

166  }
);
167  //增加鼠标拖动事件
168  title.addMouseMotionListener(new MouseMotionAdapter(){
169   public void mouseDragged(MouseEvent e) {
170    // TODO Auto-generated method stub
171    Point newP = new Point(e.getXOnScreen(), e.getYOnScreen());   
172    int x = tw.getX() + (newP.x - oldP.x);
173    int y = tw.getY() + (newP.y - oldP.y);
174    tw.setLocation(x, y);
175    oldP=newP;
176    
177   }
   
178  }
);
179  //鼠标按下时初始坐标,供拖动时计算用
180  title.addMouseListener(new MouseAdapter() {   
181   public void mousePressed(MouseEvent e) {
182    oldP = new Point(e.getXOnScreen(), e.getYOnScreen());
183   }

184  }
);
185  
186  //右上角关闭按钮事件
187  close.addMouseListener(new MouseAdapter() {
188   public void mouseClicked(MouseEvent e) {
189    tw.close();
190   }

191
192   public void mouseEntered(MouseEvent e) {
193    close.setBorder(BorderFactory.createLineBorder(Color.gray));
194   }

195
196   public void mouseExited(MouseEvent e) {
197    close.setBorder(null);
198   }

199  }
);
200
201 }

202 public static void main(String args[]) {
203  new VersionUtil();
204 }

205}

206class TipWindow extends JDialog{   
207 private static final long serialVersionUID = 8541659783234673950L;
208 private static Dimension dim;   
209    private int x,  y;   
210    private int width,  height;   
211    private static Insets screenInsets;     
212  
213   
214    public TipWindow(int width,int height)
215     this.width=width;
216     this.height=height;
217        dim = Toolkit.getDefaultToolkit().getScreenSize();   
218        screenInsets   =   Toolkit.getDefaultToolkit().getScreenInsets(this.getGraphicsConfiguration()); 
219        x = (int) (dim.getWidth() - width-3);   
220        y = (int) (dim.getHeight()-screenInsets.bottom-3);  
221     initComponents();
222    }
  
223    public void run() {   
224        for (int i = 0; i <= height; i += 10{   
225           try {   
226                this.setLocation(x, y - i); 
227                Thread.sleep(5);   
228            }
 catch (InterruptedException ex) {      
229            }
   
230        }

231        //此处代码用来实现让消息提示框5秒后自动消失
232        try {
233   Thread.sleep(5000);
234  }
 catch (InterruptedException e) {
235   // TODO Auto-generated catch block
236   e.printStackTrace();
237  }

238        close();
239    }
     
240    private void initComponents() {   
241        this.setSize(width, height);   
242        this.setLocation(x, y);   
243        this.setBackground(Color.black);        
244    }
    
245    public void close(){
246     x=this.getX();
247     y=this.getY();
248     int ybottom=(int)dim.getHeight()-screenInsets.bottom;
249     for (int i = 0; i <= ybottom-y; i += 10{   
250            try {              
251                setLocation(x, y+i); 
252                Thread.sleep(5);                                   
253            }
 catch (InterruptedException ex) {    
254            }
   
255        }
 
256     dispose();
257    }
 
258}
 
259
260
二。运行效果

程序中使用的背景图如下:


posted on 2013-07-15 10:50 rogerfan 阅读(2860) 评论(0)  编辑  收藏 所属分类: 【Java知识】

只有注册用户登录后才能发表评论。


网站导航: