消息提示框类,包含动画的设置,以及取任务栏高度
TipWindow类由网上找来经过本人修改,现将修改后的小程序发给大家试用,你们可以改的更漂亮更丰富
package test;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Image;
import java.awt.Insets;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
/**
*
* @author lgh
*/
public class TipWindow extends JDialog implements Runnable {
private static Dimension dim;
private int x, y;
private int width, height;
private static Insets screenInsets;
public TipWindow(int width,int height){
dim = Toolkit.getDefaultToolkit().getScreenSize();
screenInsets = Toolkit.getDefaultToolkit().getScreenInsets(this.getGraphicsConfiguration());
this.width=width;
this.height=height;
x = (int) (dim.getWidth() - width-3);
y = (int) (dim.getHeight()-screenInsets.bottom-3);
initComponents();
}
/*
* 开启渐入效果
* 开启后3秒,窗口自动渐出
* 若不需要渐出,注释掉,sleep(3000)和close()方法
*/
public void run() {
for (int i = 0; i <= height; i += 10) {
try {
this.setLocation(x, y - i);
Thread.sleep(5);
} catch (InterruptedException ex) {
Logger.getLogger(TipWindow.class.getName()).log(Level.SEVERE, null, ex);
}
}
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
close();
}
private void initComponents() {
this.setSize(width, height);
this.setLocation(x, y);
this.setBackground(Color.black);
this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e) {
close();
}
});
}
public void close(){
for (int i = 0; i <= height; i += 10) {
try {
setLocation(x, y-height+i);
Thread.sleep(5);
} catch (InterruptedException ex) {
Logger.getLogger(TipWindow.class.getName()).log(Level.SEVERE, null, ex);
}
}
dispose();
}
}
测试类 TipTest
package test;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.HashMap;
import java.util.Map;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
/*
* java气泡提示效果
* @author noobjava
* @version 1.0
* @since JDK1.6(建议)
*
*/
public class TipTest extends Thread{
private Map<String,String> feaMap=null;
public TipTest(){
feaMap=new HashMap<String,String>();
feaMap.put("name", "noobjava气泡提醒");
feaMap.put("release", "2010-08-20 11:33:00");
feaMap.put("feature", "1.含动画渐入与渐出效果\n2.3秒后启动动画渐出效果");
super.start();
}
public void run(){
final TipWindow tw=new TipWindow(300,220);
tw.setTitle("noobjava动画气泡提示");
JPanel headPan=new JPanel();
JPanel feaPan=new JPanel(new FlowLayout(FlowLayout.RIGHT));
JPanel btnPan=new JPanel();
JButton update=new JButton("确定");
// feaPan.setBorder(BorderFactory.createMatteBorder(1, 2, 3, 0, Color.gray));
JLabel head=new JLabel(feaMap.get("name")+",含以下功能");
head.setPreferredSize(new Dimension(250,30));
head.setForeground(Color.black);
JTextArea feature=new JTextArea(feaMap.get("feature"));
feature.setEditable(false);
feature.setForeground(Color.red);
feature.setFont(new Font("宋体",Font.PLAIN,13));
// feature.setBackground(Color.ORANGE);
feature.setPreferredSize(new Dimension(280,60));
JScrollPane jfeaPan=new JScrollPane(feature);
jfeaPan.setPreferredSize(new Dimension(283,80));
// jfeaPan.setBorder(null);
jfeaPan.setBorder(BorderFactory.createMatteBorder(1, 1, 1, 1, Color.gray));
JLabel releaseLabel=new JLabel("发布日期"+feaMap.get("release").substring(0,19));
releaseLabel.setForeground(Color.gray);
feaPan.add(jfeaPan);
feaPan.add(releaseLabel);
headPan.add(head);
btnPan.add(update);
tw.add(headPan,BorderLayout.NORTH);
tw.add(feaPan,BorderLayout.CENTER);
tw.add(btnPan,BorderLayout.SOUTH);
update.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
JOptionPane.showMessageDialog(tw, "点这里干吗?点那个XX关掉嘛");
}
});
tw.setAlwaysOnTop(true);
tw.setResizable(false);
tw.setVisible(true);
tw.run();
}
public static void main(String args[]){
new TipTest();
}
}
分享到:
相关推荐
"右下角上线提示效果"是一种常见的通知机制,它会在用户上线或有新消息时,在屏幕右下角弹出一个醒目的提示窗口,以吸引用户的注意力。这种设计在用户体验上起到了很好的提醒作用,同时保持了界面的整洁。 QQ和MSN...
在Android开发中,气泡效果通常用于提示或者通知用户,比如在消息通知、导航或快捷操作中。这种视觉效果能够吸引用户的注意力,并提供一种动态的交互体验。本篇将深入探讨如何在Android应用中实现气泡动画效果,包括...
5. **位置定位**:计算并设置气泡提示窗口在屏幕上的位置,通常会根据其需要提示的组件位置来确定,通常在右下角出现。可以使用`Point`类的`locationOnScreen()`方法获取组件的屏幕坐标,然后调整气泡窗口的位置。 ...
本项目名为"仿QQ右下角消息框代码",旨在实现一个与QQ应用相似的弹出消息提示功能。下面将详细阐述相关知识点。 1. **C#语言基础**: C#是微软公司推出的.NET框架的一部分,它结合了C++的性能和Java的简洁性。在本...
Trayicon,又称为系统托盘图标,是指在操作系统任务栏右下角的区域中显示的小图标。这些图标代表了正在后台运行但不需占据整个窗口的应用程序或系统服务。它们的存在允许用户快速访问这些程序或查看其状态,而无需...
在安卓平台上实现类似苹果应用图标右上角的数字提醒气泡提示角标,是一个常见的需求,尤其是在开发消息通知或者更新提示功能时。这个压缩包文件提供了相关资源和代码示例,帮助开发者理解和实现这一功能。这里我们将...
在气泡提醒中,开发者需要动态地创建气泡元素,并将其插入到适当的位置,如屏幕右下角或者通知中心。 2. CSS3动画:为了让气泡提醒更具吸引力,开发者通常会使用CSS3来实现动画效果。例如,气泡可以以淡入、滑动或...
6. **动画效果**:为了增强用户体验,可以添加消息加载动画,如消息从底部滑入屏幕的效果,以及点击气泡时的微小缩放动画。 7. **事件监听**:添加点击事件监听器,使用户能点击气泡查看完整的消息内容,或者执行...
常见的位置有屏幕顶部、底部、右下角或左下角。开发者需要考虑屏幕尺寸和方向的变化,确保窗口在各种设备上都能正确显示。 4. **消息队列**:如果有多条通知,需要管理一个消息队列,确保一次只显示一条通知,其他...
在Android开发中,`PopupWindow`是一个非常实用的组件,常用于实现各种弹出窗口的效果,比如下拉菜单、提示信息等。标题“PopupWindow泡泡效果(有listview)”指向了一个特殊的`PopupWindow`实现,它包含了一个`...
这可能包括了消息的时间戳显示、气泡的动画效果、以及不同状态(如未读/已读)的视觉表示。 标签中的"android"表明这是Android平台的开发项目,开发者需要掌握Java或Kotlin语言,熟悉Android SDK,懂得如何在...
在Android系统中,Launcher3是默认的主屏幕应用,它负责...通过自定义视图和后台数据加载机制,开发者可以有效地在launcher3桌面上提供个性化的未读信息提示,让用户在不打开应用的情况下也能快速感知到新消息的到来。
首先,系统托盘编程涉及的主要概念是通知区域,这是Windows任务栏右下角的一个区域,用户可以在这里找到运行中的应用程序图标,即使它们不在主窗口中显示。系统托盘图标允许程序在后台运行,同时提供快捷菜单、状态...
此外,项目的资源文件中可能包含了用于动画的XML文件或Java代码。 通过上述方法,开发者可以创建出独特且美观的自定义进度条,提升应用的视觉体验。记住,自定义UI组件时要考虑到性能和兼容性问题,确保在不同设备...
- **`im2java`**: 图像转换到Java图像,用于处理Java环境中的图像数据。 - **`image`**: 显示图像对象,用于在MATLAB中显示图像。 - **`imagesc`**: 将数据按比例显示为图像,适用于展示热力图等。 - **`imfinfo...
运行应用时,ProgressBar会自动播放这个动画序列,达到模拟圆形进度的效果。 2. **自定义View实现** 如果需要更精细的控制,可以通过继承`View`或`ProgressBar`类来自定义一个全新的组件。在自定义View中,重写`...