最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Java Swing自定义组件库系列第七期
时间:2026-05-24 08:30:01 编辑:袖梨 来源:一聚教程网
在Java Swing开发中,原生对话框样式陈旧且功能有限,CusDialog通过自定义标题栏和圆角设计解决了这些问题。本文将详细介绍该组件的核心功能与使用方法。
自定义弹窗 — CusDialog
一、背景
针对Swing原生对话框JDialog样式陈旧、无法自定义的问题,CusDialog通过移除系统装饰并自绘标题栏,实现了与CusFrame风格统一的弹窗效果。该组件支持模态/非模态切换、拖拽移动、圆角边框、遮罩层加载等多种实用功能。

二、类源码
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.json.JSONObject;
import lombok.Getter;import javax.swing.*;
import javax.swing.border.Border;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.RoundRectangle2D;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.function.Supplier;/**
1. 自定义 Dialog 弹窗
2. 实现圆角弹窗和自定义标题栏,支持拖拽移动、模态/非模态、遮罩层加载、回调事件
3. 4. 使用示例:
5. CusDialog dialog = new CusDialog(frame, "弹窗标题");
6. dialog.setSize(500, 400);
7. dialog.showDialog();
*/
public class CusDialog extends JDialog {
private static Integer WIDTH = 1300;
private static Integer HEIGHT = 800;
private final int cornerRadius = 15;
private boolean isRoundEnabled = true;
private JPanel titlePanel;
private JLabel leftIcon;
private JLabel titleLabel;
private JLabel rightIcon;
@Getter
private JLabel closeButton;
/** 关闭按钮事件 */
private Runnable closeAction;
private Point initialClick;
private boolean isDragEnabled = true;
private JPanel contentPanel;
private boolean paintBorder = true;
private boolean isLoading = false;
/** 父窗口引用,用于多显示器支持 */
private final Frame owner;
/** 对话框关闭回调事件 */
private Consumer callBack; /**
* 默认构造函数
*/
public CusDialog() {
this("");
} /**
* 指定父窗口的构造函数
* @param owner 父窗口
*/
public CusDialog(Frame owner) {
this(owner, "");
} /**
* 带标题的构造函数
* @param title 弹窗标题
* @param sizes 尺寸 [宽, 高]
*/
public CusDialog(String title, Integer... sizes) {
super((Frame) null, title, true);
if (ArrayUtil.isNotEmpty(sizes)) {
if (sizes.length == 1) WIDTH = sizes[0];
if (sizes.length > 1) {
WIDTH = sizes[0];
HEIGHT = sizes[1];
}
}
this.owner = null;
setSize(WIDTH, HEIGHT);
initialized();
} /**
* 指定父窗口和标题的构造函数
* @param owner 父窗口
* @param title 弹窗标题
*/
相关文章
-
cad序列号-密钥最新大全-autocad序列号-密钥2026激活码
05-25
-
小蓝视频轻量版安卓版下载-小蓝视频手机版安装包下载
05-25
-
腾讯云起书院app免费下载安装最新版本-腾讯云起书院小说阅读软件官方正版下载
05-25
-
快对ai如何查看历史记录-快对作业历史记录如何删除
05-25
-
抖音网页版入口在哪-抖音网页版登录链接地址
05-25
-
51漫画-韩漫大全入口
05-25