首先创建JFrame作为弹出窗口。 在其中添加一些JLabel以包含信息,并在适当的位置分配它们,使其看起来像一条通知消息。

下面给出了示例代码:

String message = 'You got a new notification message. Isn't it awesome to have such a notification message.';
String header = 'This is header of notification message';
JFrame frame = new JFrame();
frame.setSize(300,125);
frame.setLayout(new GridBagLayout());
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, 5);
constraints.fill = GridBagConstraints.BOTH;
JLabel headingLabel = new JLabel(header);
headingLabel .setIcon(headingIcon); // --- use image icon you want to be as heading image.
headingLabel.setOpaque(false);
frame.add(headingLabel, constraints);
constraints.gridx++;
constraints.weightx = 0f;
constraints.weighty = 0f;
constraints.fill = GridBagConstraints.NONE;
constraints.anchor = GridBagConstraints.NORTH;
JButton cloesButton = new JButton('X');
cloesButton.setMargin(new Insets(1, 4, 1, 4));
cloesButton.setFocusable(false);
frame.add(cloesButton, constraints);
constraints.gridx = 0;
constraints.gridy++;
constraints.weightx = 1.0f;
constraints.weighty = 1.0f;
constraints.insets = new Insets(5, 5, 5, 5);
constraints.fill = GridBagConstraints.BOTH;
JLabel messageLabel = new JLabel('<HtMl>'+message);
frame.add(messageLabel, constraints);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setVisible(true);

其输出将是:

在这里,我创建了一个JFrame并添加了两个标签; 第一个是headingLabel,它是标题标签,第二个是messageLabel,它将包含消息信息; 和一个关闭按钮。 我已经使用了GridBagLayout,但是您可以使用任何选择。

现在,要使该框架看起来像一个弹出窗口,我们必须从该框架中删除标题栏和边框。 为此,在frame.setSize(…)之后添加以下行: :
frame.setUndecorated(true);

现在的输出将是:

请注意,由于没有标题栏关闭按钮,因此现在无法关闭我们的框架。 因此,要使我们的关闭按钮可以用作框架关闭按钮,请更改其声明,如下所示:

JButton cloesButton = new JButton(new AbstractAction('x') {@Overridepublic void actionPerformed(final ActionEvent e) {frame.dispose();}
});

添加后,您将收到错误消息“无法引用用其他方法定义的内部类中的非最终变量框架”。 要摆脱此错误,您可以采用以下解决方案之一:

  1. 使您的框架变量最终。
  2. 使您的框架变量成为类中的全局变量。
  3. 使您的类扩展JFrame并完全删除frame变量。

现在,当您运行程序时,它的外观将与图2相同,但是现在您可以通过单击closeButton来关闭框架。

您会注意到您的框架出现在屏幕顶部,因此在创建框架后将其更改为屏幕右下角的位置,添加以下几行:

Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();// size of the screen
Insets toolHeight = Toolkit.getDefaultToolkit().getScreenInsets(frame.getGraphicsConfiguration());// height of the task bar
frame.setLocation(scrSize.width - frame.getWidth(), scrSize.height - toolHeight.bottom - frame.getHeight());

现在,当您运行它时,它将如下所示:

现在,要使其在预定时间后消失,请在末尾添加以下几行:

new Thread(){@Overridepublic void run() {try {Thread.sleep(5000); // time after which pop up will be disappeared.frame.dispose();} catch (InterruptedException e) {e.printStackTrace();}};
}.start();

至此,您已经成功创建了一个弹出通知,该通知将出现在屏幕的右下角,如果未单击关闭按钮,则将在一段时间后消失。

因此,作为最后的修饰,您可以通过应用外观和感觉或在框架中应用不同的颜色来根据需要进行设计。

您还可以通过添加以下内容使其显示在所有窗口的顶部:

frame.setAlwaysOnTop(true);

在上面的代码块中需要注意的一些事情:

1. messageLabel中的<HtMl>标签。 它是使标签自动换行。 但是请确保您在消息中发短信的长度不超过特定的长度。 您可以根据需要调整此高度和弹出窗口的高度。

2. “ headingIcon” 未在代码中声明。 它是您要使用的图像图标,而不是屏幕快照中的作为标题标题图标的恶魔图标。 样本声明如下所示:

ImageIcon headingIcon = new ImageIcon(“ image_url”);

3. 当前,我们的弹出窗口会在任务栏中显示一个新窗口,因此,如果您希望在任务栏中没有弹出窗口,请将JFrame更改为JDialog。

4. 在上面的代码中,默认的超时时间是5秒,您可以根据需要通过编辑以下代码行来更新弹出窗口消失之前的默认超时:

Thread.sleep(5000); //弹出窗口消失的时间。

5. 要使关闭按钮看起来像默认标题栏的关闭按钮“ x”,则显示在其文本中。 如果需要,可以将其关闭。

希望这对您有所帮助。

祝您编程愉快,别忘了分享!

参考: 用Java弹出创建新消息通知。 来自我们的JCG合作伙伴 Harsh Raval,来自harryjoy博客。

翻译自: https://www.javacodegeeks.com/2012/10/create-new-message-notification-pop-up.html

用Java弹出创建新的消息通知相关推荐

  1. 使用谷歌浏览器内核控件DCEF3拦截弹出的新页面到新标签页

    DCEF3控件TChromium有个事件OnBeforePopup,我们可以在这个事件函数里加上自己的逻辑,最后一个参数是返回参数bool &Result,置为true表示自己来处理,置为fa ...

  2. 频繁弹出“受到网络攻击”的消息怎么办,五分钟看懂“僵尸网络”攻击

    教你如何从从菜鸟到网络安全的大神 某一天,火绒工程师接到用户的反馈,称火绒频繁弹出"受到网络攻击"的消息,对此表示担心.工程师分析后发现,这是由火绒"僵尸网络防护&quo ...

  3. 计算机启动有一个硬件安装驱动,怎么解决电脑开机的时候总是弹出找到新的硬件向导的问题...

    最近,有Win7系统的用户遇到这么的一个问题,那就是每次电脑开机的时候,都会弹出一个"找到新的硬件向导"窗口:欢迎使用新硬件向导,点击关闭窗口之后,下次开机仍然会出现这个窗口.那要 ...

  4. html 点击新建窗口,【单选题】在HTML中,若实现单击超链接时,弹出一个新的网页窗口,下列的()选项符合要求。 A. 节目 B. 节目 C. 节目 D. 节目...

    [单选题]在HTML中,若实现单击超链接时,弹出一个新的网页窗口,下列的()选项符合要求. A. 节目 B. 节目 C. 节目 D. 节目 更多相关问题 扩展不确定度为()Ω,取包含因子k=2.A.0 ...

  5. JAVA弹出浏览器窗口

    JAVA弹出浏览器窗口(方坤[url]www.whjava.com[/url]) /**弹出浏览器窗口***/@SuppressWarnings("unchecked")publi ...

  6. 登录网页后要弹出一个新标签_连永久链接都不会,还做什么新媒体?

    上次给主编大大发的预览链接失效了,被骂得狗血淋头. 大部分运营人可能都遇到过这种情况,忽视了预览生成的链接只是临时的,在12小时后或超过500阅读量后就会失效.一个疏忽,给自己带来了不必要的麻烦,耽误 ...

  7. java 弹出输入框_Java--UI--弹出对话框

    对话框的四种类型: 消息, 输入,确认, 颜色 背景:建一个名为"ActionEventDemo"的窗口,在其中放置了一个按钮,一个面板,一个标签. 1)消息对话框 (1)点击按钮 ...

  8. java弹出网页alter_JavaScript三种弹出框(alert,confirm和prompt)用法举例

    我们在做网页交互的时候往往需要用户在操作之前弹出一个提示消息框来让用户做一些点击才能继续或者放弃,这里有三种模式消息框,它们分别是alert(),confirm()和prompt().下面我用最简单的 ...

  9. java 弹出下载_java如何实现下载弹出的对话框

    展开全部 Java实现点击下载32313133353236313431303231363533e58685e5aeb931333337396234文件的时候,弹出"另存为"对话框, ...

最新文章

  1. 清华大学张悠慧:超越冯·诺依曼模型,实现软硬件去耦合的类脑计算(附视频)
  2. oracle ORACLE_SID使用上的意义
  3. textarea怎样隐藏滚动条
  4. 572. 另一个树的子树
  5. linux修改组的选项名字为,Linux用户、组及权限管理浅析
  6. html链接word,word添加网址超链接方法
  7. android 本地ip获取,【android】 获取本地ip方法
  8. AJAX异步检查,检查用户名是否存在
  9. php报表统计曲线源代码,PHP绘制心电形状曲线统计图表[源码]_PHP教程
  10. Python之 if-else
  11. Python操作MySQL(二) ORM篇
  12. opencv用python进行物体识别_教你用Python+opencv来识别物体的轮廓并标识显示
  13. 【缺陷检测】基于matlab GUI形态学PCB电路板缺陷检测【含Matlab源码 821期】
  14. SQL Server 2012安装异常:Error while enabling Windows feature: NetFx3, Error Code: -2146498298
  15. Dbgview - 签名无效
  16. 简单的http客户端
  17. ETC技术之DSRC协议笔记
  18. 想要提高自己的写作水平?吃透这篇文章就够了
  19. 随机信号的参数估计(AR模型)
  20. python 读取和保存图片方法

热门文章

  1. jenkins安装与配置windows_Windows下Scoop安装、配置与使用
  2. 机器学习(周志华)- 第2章模型评估与选择笔记
  3. super 和 this 关键字的比较+调用构造器(this)+动态绑定
  4. sql 注射_只能在测试中注射吗?
  5. java客户端api文档_Java 11:新的HTTP客户端API
  6. java8日期转时间戳_Java 8日期和时间
  7. java ee的小程序_Java EE调度程序
  8. sts集成jboss_如何为JBoss Developer Studio 8设置集成和SOA工具
  9. lambdas for_借助Java 8和lambdas,可以一起使用AssertJ和Awaitility
  10. java注释类型_Java 8类型注释