分享

Java Swing右下角提示框 缓缓上升 缓缓下降 去掉任务栏高度_BLingSoft_...

 xuanda007 2010-12-15
 
 
Java Swing右下角提示框 缓缓上升 缓缓下降 去掉任务栏高度
2010年01月29日 星期五 下午 11:09
在网上找了找没有具体实现的例子,也许是没找到,索性自己写了一个!
参考学习吧,多交流!
这个觉得挺好玩,挺实用的,比如开发一个聊天什么的提示用还是蛮酷的!嘿嘿

代码如下,保存即可运行看效果:

——————————————Java Code——————————————————
package com.bling.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 BLingSoft
*   
*    右下角弹出式提示框
*    1.自动上升
*  2.停留一段时间,本例子中5秒
*  3.自动下降直至消失

*  4.线程控制窗口的出现和消失,同时添加鼠标事件控制,可以提前使提示框消失
*  5.鼠标事件结合自己的需求实现,此处只是实现一个点击事件

*  @Time 2010-01-29
*  @JDK VERSION 6.0
*  @Copy Right By BLingSoft
*/
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 bottmToolKitHeight; // 底部任务栏高度,如果没有任务栏则为零
private Integer stayTime = 5000; // 提示框停留时间

private Integer x; // 窗口起始X坐标
private Integer y; // 窗口起始Y坐标

private String title = "温馨提示";
private String message = "一个小小的提示消息例子!";

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(){
bottmToolKitHeight = Toolkit.getDefaultToolkit().getScreenInsets(this.getGraphicsConfiguration()).bottom;
Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
screenWidth = dimension.width;
screenHeight = dimension.height;

x = screenWidth-windowWidth;
y = screenHeight;
this.setLocation(x,y -bottmToolKitHeight- windowHeight);
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(false);
this.getContentPane().add(mainPanel);
this.addMouseListener(this);
Toolkit.getDefaultToolkit().beep(); // 播放系统声音,提示一下
this.setVisible(true);
}

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

@Override
public void mouseClicked(MouseEvent e) {
this.dispose();
System.exit(0);
}

@Override
public void mouseEntered(MouseEvent e) {

}

@Override
public void mouseExited(MouseEvent e) {

}

@Override
public void mousePressed(MouseEvent e) {

}

@Override
public void mouseReleased(MouseEvent e) {

}

public static void main(String[] args) {
new RightCornerPopMessage();
}
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约