我正在开发一个基于java swing的应用程序,它安装了一些计算机并通过LAN连接。我可以使用套接字在它们之间传输文件。现在我想在有人通过套接字接收任何文件时显示为通知。
ServerSocket serverSocket = new ServerSocket(6928);
Socket socket = serverSocket.accept();
BufferedInputStream bis = new BufferedInputStream(socket.getInputStream());
DataInputStream dis = new DataInputStream(bis);
int filesCount = dis.readInt();
File[] files = new File[filesCount];
通过上面的代码,我可以从其他电脑接收文件。现在我想在服务器端将其显示为通知。
最佳答案
您可以使用 TrayIcon 类。考虑以下示例,创建 TrayIcon 对象并将其添加到 SystemTray 中。鼠标单击操作附加到 TrayIcon,单击事件显示通知。您还可以使用 showNotification 方法来显示通知。
现在在您的代码中,当您从服务器收到文件时,调用 showNotification 方法以及您想要在通知上显示的数据。
static Image image = Toolkit.getDefaultToolkit().getImage("<Image Path>"); //System Tray Icon
static TrayIcon trayIcon = new TrayIcon(image, "Test");
public static void main(String[] a) throws Exception {
if (SystemTray.isSupported()) {
SystemTray tray = SystemTray.getSystemTray();
trayIcon.setImageAutoSize(true);
trayIcon.addMouseListener(new MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent e) {
trayIcon.displayMessage("Test!", "Mouse Clicked", TrayIcon.MessageType.INFO);
};
});
try {
tray.add(trayIcon);
} catch (AWTException e) {
System.err.println("TrayIcon not Added");
}
}
}
public static void showNotification(String title, String msg, String location) {
if (SystemTray.isSupported()) {
trayIcon.displayMessage(title, msg, TrayIcon.MessageType.INFO);
}
}
关于java - 如何在java swing中使用socket显示通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58297386/