你可以写单独写个线程监视是否有消息传回,然后刷新页面。至于怎么刷新页面其实很简单,写一个事件接口。然后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())
}
}
在body的noload里面有个setInterval定时器:<body style="height: 700pxoverflow: hidden" onload="setInterval('timedAlert()',10000)">
js脚本:
//ajax判断是否有提醒数据
function timedAlert(){
$.ajax({
type: "get",
url: "${basePath}/plugins/km/headlink/checkNoteCount.jspx",
dataType: "text",
cache: false,
success: function(data){
alert(data)
if(data=='0'){
alert(1)//你的代码
}else{
alert(22)
}
}
})
}
便签吧?大概的思路,希望对你有帮助!
首先数据库要一张消息表,记录消息体信息。包括消息主题、用户id、时间、发出页面、消息状态。主体实现主要是用js控制,我们用的dwr技术,将消息体的获取,时间控制及当前时间要显示的消息个数,都写到dwr配置的类中。
接着在消息js中通过dwr生成的js名称调用上述的方法获取消息信息,将数据封装到js中,在需要使用消息的页面只需要导入消息js、dwr的js就可以使用了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)