JAva Swingポップアップボックス

3316 ワード

package com.sanguo.test;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JWindow;

/**
 * 
 * @author chen
 * 
 */
public class RightCornerPopMessage extends JWindow implements Runnable,
		MouseListener {
	private static final long serialVersionUID = -3564453685861233338L;
	private Integer screenWidth;//     
	private Integer screenHeight; //     
	private Integer windowWidth = 200; //         
	private Integer windowHeight = 100; //         
	private Integer stayTime = 5000; //        
	private Integer x; //     X  
	private Integer y; //     Y  
	private String title = "    ";
	private String message = "testone";
	private JPanel mainPanel; //    
	private JLabel titleLabel; //      
	private JPanel titlePanel; //      
	private JLabel messageLabel; //     
	private JPanel messagePanel; //     

	public RightCornerPopMessage() {
		this.init();
		Thread thread = new Thread(this);
		thread.start();
	}

	private void init() {
		Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
		screenWidth = dimension.width;
		screenHeight = dimension.height;
		x = (screenWidth - windowWidth) / 2;
		y = -windowHeight;
		this.setLocation(x, y);
		mainPanel = new JPanel(new BorderLayout());
		titleLabel = new JLabel(title);
		titleLabel.setForeground(Color.WHITE);
		titlePanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
		titlePanel.setBackground(Color.RED);
		titlePanel.add(titleLabel);
		messageLabel = new JLabel(message);
		messagePanel = new JPanel();
		messagePanel.add(messageLabel);
		messagePanel.setBackground(Color.YELLOW);
		mainPanel.add(titlePanel, BorderLayout.NORTH);
		mainPanel.add(messagePanel, BorderLayout.CENTER);
		this.setSize(windowWidth, windowHeight);
		this.setAlwaysOnTop(true);//  
		this.getContentPane().add(mainPanel);
		this.addMouseListener(this);
		Toolkit.getDefaultToolkit().beep(); //       ,    
		this.setVisible(true);

	}

	public void run() {
		Integer delay = 10;
		Integer step = 1;
		Integer end = windowHeight;
		try {
			while (true) {
				step++;
				y++;
				this.setLocation(x, y);
				if (step > end) {
					Thread.sleep(stayTime);
					break;
				}
				Thread.sleep(delay);
			}
		} catch (InterruptedException e) {
			e.printStackTrace();
		}

		step = 1;
		while (true) {
			step++;
			y--;
			this.setLocation(x, y);
			if (step > end) {
				this.dispose();
				break;
			}
			try {
				Thread.sleep(delay);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			System.exit(0);
		}

	}

	public void mouseClicked(MouseEvent arg0) {
		// TODO Auto-generated method stub

	}

	public void mouseEntered(MouseEvent arg0) {
		// TODO Auto-generated method stub

	}

	public void mouseExited(MouseEvent arg0) {
		// TODO Auto-generated method stub

	}

	public void mousePressed(MouseEvent arg0) {
		// TODO Auto-generated method stub

	}

	public void mouseReleased(MouseEvent arg0) {
		// TODO Auto-generated method stub

	}

	public static void main(String[] args) throws Exception {
		// Thread.sleep(5000);
		new RightCornerPopMessage();
	}

}