Java 创建图形用户界面(GUI)组件详解之对话框(弹窗)组件 JoptionPane

Java 创建图形用户界面(GUI)组件详解之对话框(弹窗)组件 JoptionPane

文章目录

组件详解

对话框(弹窗)组件

  • 对话框:向用户显示信息或者获取用户提供的信息
  • 分类:
    • 模式对话框:在结束对它的处理之前,不允许用户与应用程序的其余窗口进行交互,主要用于在程序继续运行之前获取用户提供的信息。例如,当用户想要读取一个文件时,就会弹出一个模式文件对话框;用户必须给定一个文件名,然后程序才能够开始读操作;只有用户关闭这个模式对话框之后,应用才能够继续执行。
    • 无模式对话框:允许用户同时在对话框和应用程序的其他部分输入信息例如,工具条。只要需要,工具条可以停靠在任何地方,而且用户可以根据需要同时与应用窗口和工具条进行交互。

标准对话框:JoptionPane

  • Swing 有一组现成的简单对话框,可以让用户提供一些信息。JOptionPane 有 4 个用于显示对话框的静态方法:
    • showMessageDialog() :显示一条消息并等待用户点击 OK
    • showConfirmDialog() :显示一条消息并等待用户确认(如 OK/Cancel)
    • showOptionDialog() :显示一条消息并获得用户在一组选项中的选择
    • showInputDialog() :显示一条消息并获得用户输人的一行文本
  • 对话框有以下组件
    • 一个图标
    • 一条消息
    • 一个或多个选项按钮
    • 输入对话框有一个用于接收用户输人的额外组件。一个文本域,用户可以输入任何的字符串,或是一个组合框,用户可以从中选择一项。
  • 这些对话框的具体布局为标准消息类型选择的图标都取决于可插接式观感。左侧的图标取决于下面 5 种消息类型:每个对话框类型都有一个方法,可以用来提供自己的图标,以替代原来的图标。
    • ERROR_MESSAGE
    • INFORMATION_MESSAGE
    • WARNING_MESSAGE
    • QUESTION_MESSAGE
    • PLAIN_MESSAGE(该类型没有图标)
  • 可以为每个对话框类型指定一条消息这里的消息既可以是字符串、图标、用户界面组件,也可以是其他类型的对象。可以如下显示消息对象:提供字符串消息是目前为止最常见的情况,而提供一个 Component 会带来更大的灵活性,这是因为可以让 paintComponent() 方法绘制你想要的任何内容。
    • String:绘制字符串;
    • Icon:显示图标;
    • Component:显示组件;
    • Object[]:显示数组中的所有对象,依次叠加
    • 任何其它对象:调用 toString() 方法来显示结果字符串
  • 对话框位于底部的按钮取决于对话框类型和选项类型
    • showMessageDialog():只能看到一个标准的按钮:确认
    • showInputDialog():只能看到一组标准按钮:确认/取消
    • showOptionDialog() :可以指定一组任意的选项需要提供一个对象数组作为选项,每个数组元素会如下显示:
      • String:创建一个按钮,使用字符串作为标签
      • Icon:创建一个按钮,使用图标作为标签
    • Component:显示这个组件
  • 其他类型的对象:应用 toString() 方法,然后创建一个按钮,用结果字符串作为标签。
    • DEFAULT_OPTION(默认选项)
    • YES_NO_OPTION(Yes/No 选项)
    • YES_NO_CANCEL_OPTION(Yes/No/Cancel 选项)
    • OK_CANCEL_OPTION(ok 选项)

showConfirmDialog() :可以指定 optionType(选项类型)属性为四种选项类型之一:代码示例:

int selection =JOptionPane.showConfirmDialog(parent,"Message","Title",JOptionPane.OK_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE);if(selection =JOptionPane.OK OPTION){...}

JoptionPane 常用方法

javax.swing.JoptionPane

    • parent(父组件)参数:可以为 null
    • message 参数:显示在对话框中的消息可以是字符串、图标、组件或者它们的一个数组
    • messageType 参数:取值为 ERROR_MESSAGE、INFORMATION_MESSAGE、WARNING_MESSAGE、QUESTION_MESSAGE 和 PLAIN_MESSAGE
    • 返回值:返回用户选择的选项的索引值
      • OK_OPTION 选项的索引值为 0
      • YES_OPTION 选项的索引值为 0
      • NO_OPTION 选项的索引值为 1
      • CANCEL_OPTION 选项的索引值为 2
      • CLOSED_OPTION 选项(用户关闭对话框)的索引值为 -1
    • optionType 参数:取值为 DEFAULT_OPTION、YES_NO_OPTION、YES_NO_CANCEL_OPTION、OK_CANCEL_OPTION
    • 其他参数同消息对话框
    • 返回值:返回用户选择的选项的索引值
    • 参数同消息对话框
    • 返回值:返回用户输入的字符串;如果用户取消了对话框则返回 null
    • 参数同消息对话框

显示一个输入对话框或者内部输入对话框(内部对话框完全显示在其父组件窗体内)

staticObjectshowInputDialog(Component parent,Object message,String title,int messageType,Icon icon,Object[] values,Objectdefault)staticStringshowInputDialog(Component parent,Object message,String title,int messageType)staticStringshowInputDialog(Component parent,Object message)staticStringshowInputDialog(Object message)staticStringshowInputDialog(Component parent,Object message,Objectdefault)staticStringshowInputDialog(Object message,Objectdefault)staticObjectshowInternalInputDialog(Component parent,Object message,String title,int messageType,Icon icon,Object[]values,Objectdefault)staticStringshowInternalInputDialog(Component parent,Object message,String title,int messagelype)staticStringshowInternalInputDialog(Component parent,Object message)

显示一个选项对话框或者内部选项对话框(内部对话框完全显示在其父组件窗体内)

staticintshowoptionDialog(Component parent,Object message,String title,int optionType,int messageType,Icon icon,Object[] options,Objectdefault)staticintshowInternalOptionDialog(Component parent,Object message,String title,int optionType,int messageType,Icon icon,Object[] options,Objectdefault)

显示一个确认对话框或者内部确认对话框(内部对话框完全显示在其父组件窗体内)

staticintshowConfirmDialog(Component parent,Object message,String title,int optionType,int messageType,Icon icon)staticintshowConfirmDialog(Component parent,Object message,String title,int optionType,int messageType)staticintshowConfirmDialog(Component parent,Object message,String title,int optionType)staticintshowConfirmDialog(Component parent,Object message)staticintshowInternalConfirmDialog(Component parent, object message,String title,int optionType,int messageType,Icon icon)staticintshowInternalConfirmDialog(Component parent,Object message,String title,int optionType,int messageType)staticintshowInternalConfirmDialog(Component parent,Object message,String title,int optionType)staticintshowInternalConfirmDialog(Component parent,Object message)

显示一个消息对话框或者一个内部消息对话框(内部对话框完全显示在其父组件窗体内)

staticvoidshowMessageDialog(Component parent,Object message,String title,int messageType,Icon icon)staticvoidshowMessageDialog(Component parent,Object message,String title,int messageType)staticvoidshowMessageDialog(Component parent,Object message)staticvoidshowInternalMessageDialog(Component parent,Object message,String title,int messageType,Icon icon)staticvoidshowInternalMessageDialog(Component parent,Object message,String title,int messageType)staticvoidshowInternalMessageDialog(Component parent,Object message)

Read more

从0到1搞懂Linux动静态库制作与底层原理|开发者必备指南

从0到1搞懂Linux动静态库制作与底层原理|开发者必备指南

🔥个人主页:Cx330🌸 ❄️个人专栏:《C语言》《LeetCode刷题集》《数据结构-初阶》《C++知识分享》 《优选算法指南-必刷经典100题》《Linux操作系统》:从入门到入魔 《Git深度解析》:版本管理实战全解 🌟心向往之行必能至 🎥Cx330🌸的简介: 目录 前言: 一、先搞懂:Linux下的库是什么?二进制的“代码积木” 1.1 库的本质 1.2 库的分类与系统位置 1.3 预备工作:自定义库源码 二. 静态库:编译时链接,独立运行 2.1 整体图示:理清思路 2.2 静态库制作流程(Makefile 自动化 ,更简便) 2.3 静态库使用场景与命令

By Ne0inhk
MySQL迁金仓:高兼容+自动化,国产化迁移低成本落地实战

MySQL迁金仓:高兼容+自动化,国产化迁移低成本落地实战

目录 一、MySQL兼容性:决定迁移成本与难度的核心 1.1 协议层兼容:应用端几乎零改动,省出大量工时 1.2 语法与函数兼容:核心SQL直接复用,无需改写 1.3 数据类型与字符集兼容:贴合MySQL习惯,数据零损耗 1.4 数据库对象兼容:视图、触发器、函数直接复用,省掉隐性工作量 1.5 兼容差异注意事项:少量微调,工具自动处理 二、金仓迁移工具链(KDTS+KFS):全流程自动化,严控成本与停机时间 2.1 工具链核心:针对性解决手工迁移的核心痛点 2.2 KDTS:全量迁移自动化引擎,替代低效手工导入 2.3 KFS:增量同步+

By Ne0inhk
Flutter 组件 r_flutter 的适配 鸿蒙Harmony 实战 - 驾驭资源映射自动化、实现鸿蒙端资产强类型引用与资产冲突静态校验方案

Flutter 组件 r_flutter 的适配 鸿蒙Harmony 实战 - 驾驭资源映射自动化、实现鸿蒙端资产强类型引用与资产冲突静态校验方案

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 r_flutter 的适配 鸿蒙Harmony 实战 - 驾驭资源映射自动化、实现鸿蒙端资产强类型引用与资产冲突静态校验方案 前言 在鸿蒙(OpenHarmony)的大型 UI 工程开发中,“资源管理”是一个极易产生低级错误的重灾区。面对动辄几百个图标(PNG/SVG)、各种自定义字体文件以及多层级的资源目录。如果我们依然使用硬编码字符串(如 Image.asset('assets/images/home_icon_v2_final.png')),那么不仅毫无代码提示可言,由于文件名拼写错误引发的运行期资源丢失(Missing Asset)更是家常便饭。 我们需要一种“代码即资产”的强类型保护。 r_flutter

By Ne0inhk

Linux:初始网络(下)

或许你有一个疑问,“发请求、收响应”,却不清楚数据在网线里到底是怎么从一台主机走到另一台主机的。这篇博客在上一篇博客基础上,将最基础的局域网通信原理出发,拆解数据封装与解包的核心逻辑,再延伸到跨网段的网络传输,帮你建立起网络传输的完整宏观认知,所以大家要认真阅读啦~~ 一、同局域网通信:以太网内的主机如何直接对话 局域网是我们最常接触的网络场景,比如家里的路由器连接的电脑、手机,公司内网的办公设备,都属于同一个局域网。我们先从最核心的问题切入,理解局域网通信的底层逻辑 1. 核心问题:同一局域网的两台主机,能直接通信吗? 答案是:完全可以!局域网内的主机通信,本质是基于以太网协议、通过 MAC 地址完成的二层直连通信,原理就像我们在同一个教室里上课:老师喊出同学的名字,全班同学都能听到这个声音,但只有名字对应的同学会做出回应,其他同学会自动忽略这个信息 2. 局域网通信的唯一身份标识:MAC 地址 在以太网的局域网里,每一台主机的唯一性,靠的就是 MAC 地址来保证。 * 核心定义:MAC 地址用来识别数据链路层中相连的节点,是网卡的 “物理身份证”

By Ne0inhk