java 怎么实现消息提醒功能

Python07

java 怎么实现消息提醒功能,第1张

首先数据库要一张消息表,记录消息体信息。包括消息主题、用户id、时间、发出页面、消息状态。

主体实现主要是用js控制,我们用的dwr技术,将消息体的获取,时间控制及当前时间要显示的消息个数,都写到dwr配置的类中。

接着在消息js中通过dwr生成的js名称调用上述的方法获取消息信息,将数据封装到js中,在需要使用消息的页面只需要导入消息js、dwr的js就可以使用了。

实现提醒功能给你思路吧。

你可以写单独写个线程监视是否有消息传回,然后刷新页面。至于怎么刷新页面其实很简单,写一个事件接口。然后UI页面实现这个接口。有消息传回的时候就刷新页面。

至于系统托盘我给你一个我无聊写的倒计时程序片段,其中有系统托盘。

/**

* 设置系统托盘图标及快捷菜单

*/

private void setIcon(){

addWindowStateListener(new WindowStateListener() {

public void windowStateChanged(WindowEvent e) {

if (getState() == 1) {

setVisible(false)

}

}

})

if (SystemTray.isSupported()) {

tray = SystemTray.getSystemTray()

}

Image image = Toolkit.getDefaultToolkit().getImage(getClass().getResource("china.gif"))

ActionListener defaultListener = new ActionListener() {

public void actionPerformed(ActionEvent e) {

try {

if (e.getActionCommand().equals( "exit")) {

exit()

}

} catch (Exception ex) {

System.out.println("hehehe"+ex.getMessage())

}

}

}

ActionListener openListener = new ActionListener() {

public void actionPerformed(ActionEvent e) {

try {

if (e.getActionCommand().equals("display")) {

setVisible(true)

}

} catch (Exception ex) {

System.out.println("haha"+ex.getMessage())

}

}

}

popup = new PopupMenu()

// 创建[显示]菜单及其事件

MenuItem openItem = new MenuItem("显示")

openItem.addActionListener(openListener)

openItem.setActionCommand("display")

popup.add(openItem)

// 创建[退出]菜单及其事件

MenuItem defaultItem = new MenuItem("退出")

defaultItem.addActionListener(defaultListener)

defaultItem.setActionCommand("exit")

popup.add(defaultItem)

// 右键图标

trayIcon = new TrayIcon(image, "Java倒计时", popup)

trayIcon.setImageAutoSize(true)

trayIcon.addActionListener(defaultListener)

trayIcon.addMouseListener(new MouseAdapter() {

@SuppressWarnings("static-access")

public void mouseClicked(MouseEvent e) {

// 点击系统托盘图标和鼠标左键

if (e.getSource() == trayIcon &&e.getButton() == e.BUTTON1) {

if (e.getClickCount() == 2)// 双击

{

setVisible(true)

}

}

}

})

try {

tray.add(trayIcon)

} catch (AWTException e1) {

//e1.printStackTrace()

System.out.println("heihei"+e1.getMessage())

}

}

先写这么一个一个类。用来做你要做的事情

import java.util.TimerTask

/**

* @author songml

*

*/

public class ReportGenerator extends TimerTask {

public void run() {

System.out.println("doing something start")

}

}

再写一个定义时间的类。用来设定时间,一旦到了设定时间,调用上一个类

import java.text.SimpleDateFormat

import java.util.Calendar

import java.util.Timer

class MainApplication {

public static void main(String[] args) {

Timer timer = new Timer()

Calendar calendar = Calendar.getInstance()

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")

//设定当月的14号的上午10点23分11秒启动

calendar.set(Calendar.DATE, 14)

calendar.set(Calendar.HOUR, 10)

calendar.set(Calendar.MINUTE, 23)

calendar.set(Calendar.SECOND, 11)

//格式化时间

System.out.println("程序开始的时间是:"+df.format(calendar.getTime()))

timer.schedule(new ReportGenerator(), // TimerTask

calendar.getTime(), // Timer

1000*60*60*24)// delay

}

}

//注意如果要设定月份的话,要减一

//比如设定11月的话,用下面的代码

//calendar.set(Calendar.MONTH, 11-1)