2017-01-10 4 views

ответ

0

Вот пример, который показывает, как использовать JxBrowser Notifications API для отображения рабочего стола уведомлений:

import com.teamdev.jxbrowser.chromium.*; 
import com.teamdev.jxbrowser.chromium.events.NotificationEvent; 
import com.teamdev.jxbrowser.chromium.events.NotificationListener; 
import com.teamdev.jxbrowser.chromium.swing.BrowserView; 

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.WindowAdapter; 
import java.awt.event.WindowEvent; 

/** 
* Demonstrates how to handle HTML5 Desktop Notifications. 
*/ 
public class NotificationSample { 
    public static void main(String[] args) { 
     Browser browser = new Browser(); 
     BrowserView view = new BrowserView(browser); 

     JFrame frame = new JFrame(); 
     frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
     frame.add(view, BorderLayout.CENTER); 
     frame.setSize(700, 500); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 

     // Grant notification permission if it's necessary 
     browser.setPermissionHandler(new PermissionHandler() { 
      @Override 
      public PermissionStatus onRequestPermission(PermissionRequest request) { 
       if (request.getPermissionType() == PermissionType.NOTIFICATIONS) { 
        return PermissionStatus.GRANTED; 
       } 
       return PermissionStatus.DENIED; 
      } 
     }); 

     // Display your own notification GUI 
     BrowserContext browserContext = browser.getContext(); 
     NotificationService notificationService = browserContext.getNotificationService(); 
     notificationService.setNotificationHandler(new NotificationHandler() { 
      @Override 
      public void onShowNotification(NotificationEvent event) { 
       showNotification(event.getNotification()); 
      } 
     }); 

     browser.loadURL("notifications.html"); 
    } 

    private static void showNotification(final Notification notification) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       final JFrame frame = new JFrame(notification.getTitle()); 
       frame.setAlwaysOnTop(true); 
       JLabel messageLabel = new JLabel(notification.getMessage()); 
       messageLabel.setBorder(BorderFactory.createEmptyBorder(15, 15, 15, 15)); 
       frame.add(messageLabel, BorderLayout.CENTER); 
       frame.setMinimumSize(new Dimension(300, 100)); 
       frame.pack(); 
       frame.setLocationByPlatform(true); 
       frame.setVisible(true); 
       frame.addWindowListener(new WindowAdapter() { 
        @Override 
        public void windowClosing(WindowEvent e) { 
         notification.close(); 
        } 
       }); 

       notification.addNotificationListener(new NotificationListener() { 
        @Override 
        public void onClose(NotificationEvent event) { 
         SwingUtilities.invokeLater(new Runnable() { 
          @Override 
          public void run() { 
           frame.setVisible(false); 
           frame.dispose(); 
          } 
         }); 
        } 
       }); 
      } 
     }); 
    } 
} 
+0

нет апи в JxBrowser как setPermissionHandler и setNotificationHandler и getNotificationService(), в какой версии Jxbrowser вы используете –

+0

. В соответствии с примечаниями к выпуску этот API был добавлен в 6.8: https://jxbrowser.support.teamdev.com/support/discussions/forums/9000110576 – Vladimir

Смежные вопросы