Java Swing 实现右下角弹窗动画效果示例

不晚
不晚
发布时间:2026-10-14| 6人浏览过
原创

在 Java 桌面应用开发中,有时需要实现类似 Windows 或 QQ 的消息通知效果。本文将演示如何利用标准的 Swing 组件和定时器,创建一个从屏幕右下角平滑弹出的对话框。

实现原理

要实现右下角弹窗的“滑入”效果,核心逻辑在于控制窗口的垂直位置(Y 坐标)。初始状态下,窗口位于屏幕最底部,随后通过一个短时间的循环或定时器,不断减小 Y 坐标值(即向上移动),直到达到最终显示位置。本示例采用 javax.swing.Timer 配合手动循环更新的方式来模拟这一过程。

准备工作

确保你的开发环境已安装 JDK,并准备好基础的 IDE(如 IntelliJ IDEA 或 Eclipse)。无需引入第三方库,所有功能均基于 Java 标准 API 实现。

第1步:构建主类与控制逻辑

创建主类以初始化弹窗并启动动画序列。我们需要获取屏幕高度,设定一个递增的高度变量来控制弹窗的展开幅度。

  • 目的:定义弹窗的尺寸变化范围和触发动画的入口。
  • 操作:实例化自定义对话框对象,创建 TimerAction 监听器,并启动定时器。
  • 关键代码参数:
    • 初始高度设为 150。
    • 循环次数 i < 10,每次迭代增加高度并暂停毫秒数以产生动画感。
复制代码 代码如下:
package com.wolf.action;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JDialog;
import javax.swing.Timer;

public class Demo extends Timer {

    private static final long serialVersionUID = 2791827603307165823L;

    public Demo(int arg0, ActionListener arg1) {
        super(arg0, arg1);
    }

    public static void main(String[] args) {
        MyDialog mydialog = new MyDialog();
        int height = 150;
        TimerAction timerAction = new TimerAction(mydialog);
        Timer timer = new Timer(0, timerAction);
        timer.start();
        for (int i = 0; i < 10; i++) {
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            height = height + 5;
            timerAction.setHeight(height);
        }
        timer.stop();
        new Demo(1, timerAction);
    }
}

class TimerAction implements ActionListener {
    private MyDialog mydialog = null;

    private int height = 0;

    public void setHeight(int height) {
        this.height = height;
    }

    public TimerAction(MyDialog mydialog) {
        this.mydialog = mydialog;
    }

    public void actionPerformed(ActionEvent event) {
        mydialog.setLocation(((int) mydialog.getScreenSize().getWidth()) - 200,
                ((int) mydialog.getScreenSize().getHeight() - 20 - height));
        mydialog.setSize(new Dimension(200, height));
    }
}

class MyDialog extends JDialog {

    private static final long serialVersionUID = 2791827603307165823L;
    private Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

    public Dimension getScreenSize() {
        return screenSize;
    }

    public MyDialog() {
        super();
        init();
    }

    private void init() {
        this.getContentPane().setLayout(new BorderLayout());
        this.setLocation(((int) screenSize.getWidth()) - 200,
                ((int) screenSize.getHeight() - 20));
        this.setVisible(true);
        this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
    }
}

完成判断

运行上述代码后,观察屏幕右下角是否会出现一个宽200像素、高150像素的窗口,并在运行后的短时间内逐渐向上方轻微移动(根据代码逻辑,高度增加会导致Y坐标减小,从而实现上移效果)。如果窗口正常显示且无异常报错,则说明弹窗机制工作正常。

简要总结

该示例展示了 Java Swing 在处理简单 GUI 动画时的基本用法。通过分离视图层(MyDialog)和控制层(TimerAction),可以清晰地管理窗口状态。对于更复杂的动画效果,建议考虑使用 javax.animation 包或更现代的 UI 框架。以上就是 Java Swing 实现右下角弹窗动画的详细内容,更多关于 Java GUI 开发的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。