本文主要是介绍Java Swing 自定义Dialog确认对话框、窗口关闭时弹出对话框询问,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Java Swing 自定义Dialog确认对话框
- 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() {@Overridepublic void windowClosing(WindowEvent e) {new CustomDialog(TITLE, CONTENT).setVisible(true);}});JButton jButton = new JButton("点我或关闭按钮看看效果");jButton.addActionListener(new ActionListener() {@Overridepublic 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 事件*/@Overridepublic 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弹框演示
这篇关于Java Swing 自定义Dialog确认对话框、窗口关闭时弹出对话框询问的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!