1. 程式人生 > >java Swing彈出式提示框

java Swing彈出式提示框

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();
	}

}