如何在Java中显示ms Outlook的通知如弹出窗口?

问题描述

| 如何在Java swing中显示ms Outlook的通知(如弹出窗口)?可能吗?还有其他选择吗?     

解决方法

        这是您的通知弹出窗口: 带有示例的代码:
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.LinearGradientPaint;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;

public class NotificationPopup extends JDialog {
  private final LinearGradientPaint lpg;

  public NotificationPopup() {
    setUndecorated(true);
    setSize(300,100);

    // size of the screen
    final Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

    // height of the task bar
    final Insets scnMax = Toolkit.getDefaultToolkit().getScreenInsets(
        getGraphicsConfiguration());
    final int taskBarSize = scnMax.bottom;

    setLocation(screenSize.width - getWidth(),screenSize.height - taskBarSize
        - getHeight());

    // background paint
    lpg = new LinearGradientPaint(0,getHeight() / 2,new float[] { 0f,0.3f,1f },new Color[] { new Color(0.8f,0.8f,1f),new Color(0.7f,0.7f,new Color(0.6f,0.6f,1f) });

    // blue background panel
    setContentPane(new BackgroundPanel());
  }

  private class BackgroundPanel extends JPanel {
    public BackgroundPanel() {
      setOpaque(true);
    }

    @Override
    protected void paintComponent(final Graphics g) {
      final Graphics2D g2d = (Graphics2D) g;
      // background
      g2d.setPaint(lpg);
      g2d.fillRect(1,1,getWidth() - 2,getHeight() - 2);
      g2d.setColor(Color.BLACK);

      // border
      g2d.drawRect(0,getWidth() - 1,getHeight() - 1);
    }
  }

  public static void main(final String[] args) {

    SwingUtilities.invokeLater(new Runnable() {
      @Override
      public void run() {
        try {
          UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (final Exception e1) {
          e1.printStackTrace();
        }

        final NotificationPopup f = new NotificationPopup();

        final Container c = f.getContentPane();
        c.setLayout(new GridBagLayout());

        final GridBagConstraints constraints = new GridBagConstraints();
        constraints.gridx = 0;
        constraints.gridy = 0;
        constraints.weightx = 1.0f;
        constraints.weighty = 1.0f;
        constraints.insets = new Insets(5,5,5);
        constraints.fill = GridBagConstraints.BOTH;

        final JLabel l = new JLabel(\"You have got 2 new Messages.\");
        l.setOpaque(false);

        c.add(l,constraints);

        constraints.gridx++;
        constraints.weightx = 0f;
        constraints.weighty = 0f;
        constraints.fill = GridBagConstraints.NONE;
        constraints.anchor = GridBagConstraints.NORTH;

        final JButton b = new JButton(new AbstractAction(\"x\") {

          @Override
          public void actionPerformed(final ActionEvent e) {
            f.dispose();
          }
        });

        b.setOpaque(false);
        b.setMargin(new Insets(1,4,4));
        b.setFocusable(false);

        c.add(b,constraints);

        f.setVisible(true);
      }
    });
  }
}
    ,        您将需要查看系统托盘API。 displayIcon方法应满足您的需求:   在托盘附近显示弹出消息   图标。该消息将在   时间或用户单击时间。   点击该消息可能会触发   ActionEvent。     ,        只需使用未修饰的JFrame(frame.setUndecorated(true)),然后使用Toolkit.getDefaultToolkit()。getScreenSize()计算位置和大小。     ,        您可以使用JTelegraph获取彩色弹出窗口。您所要做的就是获取其jar文件(您还需要再获取两个jar文件)并将其包含在构建路径中并开始编码。 这里给出了详细而简单的说明-http://tphangout.com/?p=41     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...