Как показать уведомление с помощью сокета в Java Swing - PullRequest
0 голосов
/ 09 октября 2019

Я разрабатываю приложение на основе Java-свинга, которое устанавливает какой-то компьютер и подключается по локальной сети. Я могу передавать файлы между ними с помощью сокета. Теперь я хотел показать в виде уведомления, когда кто-то получает какой-либо файл через сокет.

    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];

По приведенному выше коду я могу получить файл с другого ПК. Теперь я хочу показать это как уведомление на стороне сервера.

1 Ответ

0 голосов
/ 10 октября 2019

Вы можете использовать класс 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);
        }
    }
...