十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
首先数据库要一张消息表,记录消息体信息。包括消息主题、用户id、时间、发出页面、消息状态。
网站建设哪家好,找创新互联建站!专注于网页设计、网站建设、微信开发、重庆小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了迎泽免费建站欢迎大家使用!
主体实现主要是用js控制,我们用的dwr技术,将消息体的获取,时间控制及当前时间要显示的消息个数,都写到dwr配置的类中。
接着在消息js中通过dwr生成的js名称调用上述的方法获取消息信息,将数据封装到js中,在需要使用消息的页面只需要导入消息js、dwr的js就可以使用了。
弹出消息,可以使用 TrayIcon 的 displayMessage() 方法,代码如下:
import java.awt.*;
import java.awt.TrayIcon.MessageType;
import javax.swing.JButton;
import javax.swing.JFrame;
public class App extends JFrame {
private static final long serialVersionUID = 1L;
private TrayIcon trayIcon;
public App() {
this.setSize(300, 200);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLayout(new FlowLayout());
JButton btnTest = new JButton("弹出消息");
btnTest.addActionListener(e - {
// 弹出消息
trayIcon.displayMessage("Tray Demo", "Hello World!", MessageType.INFO);
});
this.add(btnTest);
if (SystemTray.isSupported()) {
SystemTray tray = SystemTray.getSystemTray();
Image image = Toolkit.getDefaultToolkit().getImage("images/tray16.png");
this.trayIcon = new TrayIcon(image);
try {
tray.add(trayIcon);
} catch (AWTException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
new App().setVisible(true);
}
}
实现提醒功能给你思路吧。
你可以写单独写个线程监视是否有消息传回,然后刷新页面。至于怎么刷新页面其实很简单,写一个事件接口。然后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());
}
}