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 使用是比较广泛的.无论是提示一个提示语,还是确认信息,还是有一定交互的(弹出验证码,输入账号密码登录等等)对话框. 而我们去看一下原生的对话框,虽然随着 ...
随机推荐
- 洛谷 P1629 邮递员送信-反向建边
洛谷 P1629 邮递员送信 题目描述: 有一个邮递员要送东西,邮局在节点 11.他总共要送 n-1n−1 样东西,其目的地分别是节点 22 到节点 nn.由于这个城市的交通比较繁忙,因此所有的道路都 ...
- Kubernets二进制安装(16)之安装部署traefik(ingress)
K8S的DNS实现了服务在集群"内"被自动发现,如何使得服务在Kuberneters集群"外"被使用和访问呢,有二种方法 1)使用NodePort型的Servi ...
- OpenStack Train版-2.安装keystone身份认证服务
安装 keystone 认证 mysql -uroot create database keystone; grant all privileges on keystone.* to 'keyston ...
- XCTF攻防世界web进阶练习—mfw
XCTF攻防世界web进阶练习-mfw题目为mfw,没有任何提示.直接打开题目,是一个网站 大概浏览一下其中的内容,看到其中url变化其实只是get的参数的变化查看它的源码,看到有一个?page=fl ...
- apache 解析漏洞(CVE-2017-15715)
在p牛博客最近更新的文章,传送门,感觉很有意思,自己在自己本地测试了一下 0x01 正则表达式中的 '$' apache这次解析漏洞的根本原因就是这个 $,正则表达式中,我们都知道$用来匹配字符串结尾 ...
- HBuilderX All In One
HBuilderX All In One uni-app https://uniapp.dcloud.io/quickstart-hx 目录结构 一个uni-app工程,默认包含如下目录及文件: $ ...
- sentry.event & UnhandledRejection & promise rejection
sentry.event & UnhandledRejection & promise rejection Non-Error promise rejection captured s ...
- MathJax TeX & LaTeX
MathJax TeX & LaTeX mathcal https://leetcode-cn.com/problems/binary-search/solution/er-fen-cha-z ...
- O² & O₂
O² & O₂ special symbol O² & O₂ HTML HTML subscript and superscript Tags HTML 下标元素 HTML 上标元素 ...
- SVG Tutorials
SVG Tutorials W3C https://www.w3.org/TR/SVG11/ https://www.w3.org/TR/SVG2/ https://www.w3.org/TR/svg ...