• JOptionPane


    语雀笔记:https://www.yuque.com/huangzhanqi/rhwoir/paaoghdyv0tgksk1icon-default.png?t=N7T8https://www.yuque.com/huangzhanqi/rhwoir/paaoghdyv0tgksk1Java图形化界面: Java图形化界面学习demo与资料 (gitee.com)icon-default.png?t=N7T8https://gitee.com/zhanqi214/java-graphical-interface

    使用JOptionPane

    基本概述

    通过 JOptionPane 可以非常方便地创建一些简单的对话框, Swing 已经为这些对话框添加了相应的组件,无须程序员手动添加组件 。 JOptionPane 提供了如下 4 个方法来创建对话框 。

    方法名称

    方法功能

    showMessageDialog/showInternalMessageDialog

    消息对话框 ,告知用户某事己发生 , 用户只能单击"确定"按钮 , 类似于 JavaScript 的 alert 函数 。

    showConfirmDialog/showInternalConfirmDialog

    确认对话框,向用户确认某个问题,用户可以选择 yes 、 no ~ cancel 等选项 。 类似于 JavaScript 的 comfirm 函数 。该方法返回用户单击了 哪个按钮

    showInputDialog/showInternalInputDialog

    输入对话框,提示要求输入某些信息,类似于 JavaScript的 prompt 函数。该方法返回用户输入的字符串 。

    showOptionDialog/showInternalOptionDialog

    自定义选项对话框 ,允许使用自 定义选项 ,可以取代showConfirmDialog 所产生的对话框,只是用起来更复杂 。

    上述方法都有都有很多重载形式,选择其中一种最全的形式,参数解释如下:

    1. --参数解释:
    2. parentComponent:当前对话框的父组件
    3. message:对话框上显示的信息,信息可以是字符串、组件、图片等
    4. title:当前对话框的标题
    5. optionType:当前对话框上显示的按钮类型:DEFAULT_OPTION、YES_NO_OPTION、YES_NO_CANCEL_OPTION、OK_CANCEL_OPTION
    6. messageType:当前对话框的类型:ERROR_MESSAGE、INFORMATION_MESSAGE、WARNING_MESSAGE、QUESTION_MESSAGE、PLAIN_MESSAGE
    7. icon:当前对话框左上角的图标
    8. options:自定义下拉列表的选项
    9. initialValue:自定义选项中的默认选中项
    10. showXxxDialog(Component parentComponent,
    11. Object message,
    12. String title,
    13. int optionType,
    14. int messageType,
    15. Icon icon,
    16. Object[] options,
    17. Object initialValue)

    当用户与对话框交互结束后,不同类型对话框的返回值如下:

    • showMessageDialog: 无返回值 。
    • showlnputDialog: 返回用户输入或选择的字符串 。
    • showConfirmDialog: 返回 一个整数代表用户选择的选项 。
    • showOptionDialog : 返回 一个整数代表用户选择的选项,如果用户选择第一项,则返回 0; 如果选择第二项,则返回1……依此类推 。

    对 showConfirmDialog 所产生的对话框,有如下几个返回值:

    • YES OPTION: 用户 单击了 "是"按钮后返回 。
    • NO OPTION: 用 户单击了"否"按钮后返回 。
    • CANCEL OPTION: 用户单击了"取消"按钮后返回 。
    • OK OPTION : 用户单击了"确定"按钮后返回 。
    • CLOSED OPTION: 用户 单击了对话框右上角的 " x" 按钮后返回。
    四种对话框演示

    1. package swing.day01;
    2. import awt.day01.Utils;
    3. import javax.swing.*;
    4. import java.awt.*;
    5. import java.awt.event.ActionEvent;
    6. public class MessageDialogTest {
    7. JFrame frame = new JFrame("消息对话框");
    8. JTextArea textArea = new JTextArea(8,20);
    9. JButton button=new JButton(new AbstractAction("弹出消息对话框") {
    10. @Override
    11. public void actionPerformed(ActionEvent e) {
    12. JOptionPane.showMessageDialog(frame,textArea.getText(),"消息对话框",JOptionPane.YES_OPTION,new ImageIcon("src/swing/img/component/female.png"));
    13. textArea.append("用户点击了确定按钮");
    14. }
    15. });
    16. public void init(){
    17. frame.add(textArea);
    18. textArea.setText("Hello China");
    19. frame.add(button, BorderLayout.SOUTH);
    20. Utils.setJFrame(frame);
    21. }
    22. public static void main(String[] args) {
    23. new MessageDialogTest().init();
    24. }
    25. }

    确认对话框:

    1. package swing.day01;
    2. import awt.day01.Utils;
    3. import javax.swing.*;
    4. import java.awt.*;
    5. import java.awt.event.ActionEvent;
    6. public class ConfirmDialogTest {
    7. JFrame frame = new JFrame("确认对话框");
    8. JTextArea textArea = new JTextArea(8,20);
    9. JButton button=new JButton(new AbstractAction("确认对话框") {
    10. @Override
    11. public void actionPerformed(ActionEvent e) {
    12. int i = JOptionPane.showConfirmDialog(frame, textArea.getText(), "消息对话框", JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE, new ImageIcon("src/swing/img/component/female.png"));
    13. if (i==1) {
    14. textArea.append("用户点击了确认按钮\n");
    15. }else {
    16. textArea.append("用户点击了取消按钮\n");
    17. }
    18. }
    19. });
    20. public void init(){
    21. frame.add(textArea);
    22. textArea.setText("Hello China\n");
    23. frame.add(button, BorderLayout.SOUTH);
    24. Utils.setJFrame(frame);
    25. }
    26. public static void main(String[] args) {
    27. new ConfirmDialogTest().init();
    28. }
    29. }

    1. package swing.day01;
    2. import awt.day01.Utils;
    3. import javax.swing.*;
    4. import java.awt.*;
    5. import java.awt.event.ActionEvent;
    6. import java.util.Objects;
    7. public class InputDialogTest {
    8. JFrame frame = new JFrame("输入对话框");
    9. JTextArea textArea = new JTextArea(8,20);
    10. JButton input=new JButton(new AbstractAction("输入对话框") {
    11. @Override
    12. public void actionPerformed(ActionEvent e) {
    13. String s = JOptionPane.showInputDialog(frame, "请填写您的银行卡账号", "输入对话框", JOptionPane.QUESTION_MESSAGE);
    14. if (Objects.nonNull(s)) {
    15. textArea.append(s);
    16. }
    17. }
    18. });
    19. JButton choose=new JButton(new AbstractAction("输入对话框") {
    20. @Override
    21. public void actionPerformed(ActionEvent e) {
    22. Object o = JOptionPane.showInputDialog(frame, "", "输入对话框", JOptionPane.DEFAULT_OPTION, null, new String[]{"淀粉肠", "火腿肠", "纯肉肠"}, "纯肉肠");
    23. if (Objects.nonNull(o)) {
    24. textArea.append(o.toString());
    25. }
    26. }
    27. });
    28. JPanel panel = new JPanel();
    29. public void init(){
    30. frame.add(textArea);
    31. frame.add(panel,BorderLayout.SOUTH);
    32. panel.add(input);
    33. panel.add(choose);
    34. Utils.setJFrame(frame);
    35. }
    36. public static void main(String[] args) {
    37. new InputDialogTest().init();
    38. }
    39. }

    1. package swing.day01;
    2. import awt.day01.Utils;
    3. import javax.swing.*;
    4. import java.awt.*;
    5. import java.awt.event.ActionEvent;
    6. public class OptionDialogTest {
    7. JFrame frame = new JFrame("选项对话框");
    8. JTextArea textArea = new JTextArea(8,20);
    9. JButton button=new JButton(new AbstractAction("弹出选项对话框") {
    10. @Override
    11. public void actionPerformed(ActionEvent e) {
    12. int i = JOptionPane.showOptionDialog(frame, "请选择尿不湿号码", "选项对话框", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null, new String[]{"小号", "中号", "大号"}, "中号");
    13. System.out.println(i);
    14. if (i == 0) {
    15. textArea.append("用户选择了小号\n");
    16. } else if (i == 1) {
    17. textArea.append("用户选择了中号\n");
    18. } else if (i == 2) {
    19. textArea.append("用户选择了大号\n");
    20. }else{
    21. textArea.append("用户未选择\n");
    22. }
    23. }
    24. });
    25. public void init(){
    26. frame.add(textArea);
    27. textArea.setText("Hello China\n");
    28. frame.add(button, BorderLayout.SOUTH);
    29. Utils.setJFrame(frame);
    30. }
    31. public static void main(String[] args) {
    32. new OptionDialogTest().init();
    33. }
    34. }
  • 相关阅读:
    Redi未授权访问的两种利用方式
    HLS基础issue
    jvm的内存区域
    Linux系统下DHCP服务安装部署和使用实例详解(蜜罐)
    2023亚太杯数学建模A题思路分析
    星环科技TDS 2.4.0 发布: 数据开发、数据治理、数据运营套件能力再次升级
    js 之reduce 方法实现数组去重原理分布解析
    【JavaWeb - 网页编程】七 HTTP 协议 与 Servlet 技术
    写个续集,填坑来了!关于“Thread.sleep(0)这一行‘看似无用’的代码”里面留下的坑。
    蓝桥杯单片机快速开发笔记——定时器
  • 原文地址:https://blog.csdn.net/m0_73843666/article/details/132889124