Java Swing 自定义Dialog确认对话框
Java Swing 自定义Dialog
- 需求:当点击JFrame窗口的关闭按钮时,弹框询问是否确定关闭窗口,如果是则关闭程序,否就让弹框消失什么也不做(使用Dialog)。
- 分析:虽然Java提供了 JOptionPane 类,用来创建标准对话框,但是此处需要使用Dialog来提供弹框。所以可以通过扩展 JDialog 类创建自定义的对话框。
实现如下:
package com.tianjh.dialog;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
* @author tianjh
* @date 2021/3/8
* 当点击JFrame窗口的关闭按钮时,触发窗口监听事件
* 弹框询问是否真的需要关闭程序
*/
public class MyDialog extends JFrame {
JPanel jPanel;
static final String TITLE = "提示";
static final String CONTENT = "确定要关闭JFrame窗口吗?";
public MyDialog() {
jPanel = new JPanel();
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
new CustomDialog(TITLE, CONTENT).setVisible(true);
}
});
JButton jButton = new JButton("点我或关闭按钮看看效果");
jButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new CustomDialog(TITLE, CONTENT).setVisible(true);
}
});
jPanel.add(jButton,BorderLayout.CENTER);
add(jPanel);
setTitle("JFrame窗口");
setSize(500, 300);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new MyDialog();
}
}
/**
* 自定义Dialog对话框
*/
class CustomDialog extends JDialog implements ActionListener {
String title;
String content;
String ok = "确定";
String cancel = "取消";
public CustomDialog(String title, String content) {
this.title = title;
this.content = content;
int width = 45, height = 45;
// 创建1个图标实例,注意image目录要与src同级
ImageIcon icon = new ImageIcon("image//tu.png");
icon.setImage(icon.getImage().getScaledInstance(width, height, Image.SCALE_DEFAULT));
// 1个图片标签,显示图片
JLabel jlImg = new JLabel(icon);
jlImg.setSize(width, height);
jlImg.setBounds(20, 44, width, height);
// 1个文字标签,显示文本
JLabel jLabel = new JLabel(content);
jLabel.setFont(new Font("", Font.PLAIN, 14));
// 设置文字的颜色为蓝色
jLabel.setForeground(Color.black);
jLabel.setBounds(75, 43, 180, 45);
JButton okBut = new JButton(ok);
JButton cancelBut = new JButton(cancel);
okBut.setBackground(Color.LIGHT_GRAY);
okBut.setBorderPainted(false);
okBut.setBounds(65, 126, 98, 31);
cancelBut.setBounds(175, 126, 98, 31);
cancelBut.setBackground(Color.LIGHT_GRAY);
cancelBut.setBorderPainted(false);
// 给按钮添加响应事件
okBut.addActionListener(this);
cancelBut.addActionListener(this);
// 向对话框中加入各组件
add(jlImg);
add(jLabel);
add(okBut);
add(cancelBut);
// 对话框流式布局
setLayout(null);
// 窗口左上角的小图标
setIconImage(icon.getImage());
// 设置标题
setTitle(title);
// 设置为模态窗口,此时不能操作父窗口
setModal(true);
// 设置对话框大小
setSize(300, 210);
// 对话框局域屏幕中央
setLocationRelativeTo(null);
// 对话框不可缩放
setResizable(false);
// 点击对话框关闭按钮时,销毁对话框
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}
/**
* 当按钮被点击时会执行下面的方法
*
* @param e 事件
*/
@Override
public void actionPerformed(ActionEvent e) {
// 判断是不是确定按钮被点击
if (ok.equals(e.getActionCommand())) {
// 对话框不可见
this.setVisible(false);
System.out.println("我退出程序了...");
System.exit(0);
}
if (cancel.equals(e.getActionCommand())) {
this.setVisible(false);
this.dispose();
System.out.println("我啥也没干...");
}
}
}
- JFrame界面如下所示:

- 点击JFrame窗口中的按钮或者关闭按钮即可触发确认对话框,点击之后的结果如下:

- 如果点击确定,则退出该程序,否则退回到Jframe窗口撒事也不干。
Java Swing 自定义Dialog确认对话框的更多相关文章
- Android中制作自定义dialog对话框的实例
http://www.jb51.net/article/83319.htm 这篇文章主要介绍了Android中制作自定义dialog对话框的实例分享,安卓自带的Dialog显然不够用,因而我们要继 ...
- Dialog详解(包括进度条、PopupWindow、自定义view、自定义样式的对话框)
Dialog详解(包括进度条.PopupWindow.自定义view.自定义样式的对话框) Android中提供了多种对话框,在实际应用中我们可能会需要修改这些已有的对话框.本实例就是从实际出发, ...
- Java Swing创建自定义闪屏:在闪屏上添加Swing进度条控件(转)
本文将讲解如何做一个类似MyEclipse启动画面的闪屏,为Java Swing应用程序增添魅力. 首先看一下效果图吧, 原理很简单,就是创建一个Dialog,Dialog有一个进度条和一个Label ...
- Android FlycoDialog 简单实用的自定义Android弹窗对话框之Dialog篇
效果图镇楼 FlycoDialog是一款非常棒的弹窗对话框处理框架,今天在这里主要讲一下他的自定义弹出对话框的功能,这里以第二幅效果图为例,图片已经放在博客最下方,X号自己随便找一个东西代替吧. ...
- Java Swing提供的文件选择对话框 - JFileChooser
JFileChooser() 构造一个指向用户默认目录的 JFileChooser. JFileChooser(File currentDirectory) 使 ...
- Android自定义 Dialog 对话框
Android自定义Dialoghttp://www.cnblogs.com/and_he/archive/2011/09/16/2178716.html Android使用自定义AlertDialo ...
- swing自定义JDialog弹出框
第一次搞swing,自定义JDialog的例子较少,写下来备忘 ,对JDialog中的文本框进行了验证 package com.chauvet; import java.awt.Component; ...
- java swing JDialog 和 java.util.concurrent的使用
参考链接: Java-Swing的JFrame的一些插件使用详解 java swing JDialog 使用 ScheduledExecutorService定时周期执行指定的任务 swing JDi ...
- Android—自定义Dialog
在 Android 日常的开发中,Dialog 使用是比较广泛的.无论是提示一个提示语,还是确认信息,还是有一定交互的(弹出验证码,输入账号密码登录等等)对话框. 而我们去看一下原生的对话框,虽然随着 ...
随机推荐
- SpringBoot整合shiro-MD5盐值加密
为什么要进行密码加密? 在我们的日常生活中,许多人有着在不同网站上使用相同密码的坏习惯(包括我也是qaq),假如应用程序或服务器出现漏洞,数据被窃取,用户的明文密码直接被暴露给黑客.显然后果将不堪设想 ...
- SpringSecurity简单使用
什么是SpringSecurity? Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以在Spring应用上下文中配置 ...
- TCP 连接
面试题传送 TCP 报文格式 此处介绍建立或者断开TCP连接时,需要了解的TCP报文段首部字段含义: 序列号 seq:占4个字节(32位),用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上 ...
- Chapter Zero 0.2.2 内存
目录 内存 内存的多通道设计 DRAM 和 SRAM 只读存储器(ROM) RAM.ROM以及硬盘的区别(转自百度) 内存 CPU的数据都是来自主存储器(main memory),个人计算机的主寄存器 ...
- vue-cli emit webpack config
vue-cli emit webpack config 如何暴漏出 vue-cli 的 webpack 配置文件 refs xgqfrms 2012-2020 www.cnblogs.com 发布文章 ...
- FTP 与 SSH 的安全性对比, 以及FTP,SSH,SFTP,SCP 的关系简单解析!
FTP 与 SSH 的安全性对比? ftP: http://baike.baidu.com/subview/369/6149695.htm TCP/IP协议中,FTP标准命令TCP端口号为21,Por ...
- TS & ES-Next & playground
TS & ES-Next & playground TS TypeScript: TS Playground - An online editor for exploring Type ...
- windows driver 简单的驱动和通信
sysmain.c #pragma once #pragma warning(disable: 4100) #include <ntifs.h> #include <ntddk.h& ...
- windows10 WSL
搭建WSL linux下的home目录,映射windows的目录地址 用户家目录 ➜ ~ pwd /home/ajanuw C:\Users\ajanuw\AppData\Local\Packages ...
- Flutter 在同一页面显示List和Grid
import 'package:flutter/material.dart'; void main() => runApp(MyApp()); class MyApp extends State ...