文章目录

  • 前言
  • 一、DialogWrapper
  • 二、使用 DialogWrapper
    • 1. 简单小案例
      • 1.1 定义dialog
      • 1.2 使用dialog
  • 2. 默认 dialog
    • 2.1 com.intellij.openapi.ui.Messages
  • 总结

前言

Dialogs (对话框), 在图形用户界面中,对话框(又称对话方块[1])是一种特殊的视窗, 用来在用户界面中向用户显示信息,或者在需要的时候获得用户的输入响应。之所以称之为“对话框”是因为它们使计算机和用户之间构成了一个对话——或者是通知用户一些信息,或者是请求用户的输入,或者两者皆有。


一、DialogWrapper

DialogWrapper是一个基类,应该用于IntelliJ平台中显示的所有模式对话框(以及一些非模式对话框)。

它提供以下功能

  • 按钮布局(确定/取消按钮的平台特定顺序,macOS特定的帮助按钮)
  • 非模式验证(当输入到对话框的数据无效时显示错误消息文本)
  • 快捷键支持 (esc (退出), Left/Right(按钮切换), Y/N (如果对话框中存在是/否操作,则为Y/N))
  • 可选“不再询问”复选框

DialogWrapper类通常与GUI设计器窗体一起使用。在本例中,将GUI设计器窗体绑定到类扩展DialogWrapper,将窗体的顶层面板绑定到一个字段,然后从createCenterPanel()方法返回该字段。

要显示对话框,请调用show()方法,然后使用getExitCode()方法检查对话框是如何关闭的。showAndGet()方法可用于组合这两个调用。

扩展功能

  • 要自定义对话框中显示的按钮(替换标准的“确定”/“取消”/“帮助”按钮),需要重写createActions()或createLeftActions()方法。这两个方法都返回一个Swing动作对象数组。如果某个按钮关闭了对话框,请使用DialogWrapperExitAction作为操作的基类。使用动作.putValue(DialogWrapper.DEFAULT_ACTION,true)设置默认按钮。
  • 要验证输入到对话框中的数据,请重写doValidate()方法。计时器将自动调用该方法。如果当前输入的数据有效,则返回null。否则,返回封装错误消息的ValidationInfo对象和与无效数据关联的可选组件。当指定一个组件时,一个错误图标将显示在它旁边,当用户试图调用OK操作时,它将被聚焦。

二、使用 DialogWrapper

1. 简单小案例

代码如下(示例):

1.1 定义dialog

public class SampleDialogWrapper extends DialogWrapper {public SampleDialogWrapper() {super(true); // use current window as parentinit();setTitle("Test DialogWrapper");}/*** 自定义提示组件** @return JComponent*/@Nullable@Overrideprotected JComponent createCenterPanel() {JPanel dialogPanel = new JPanel(new BorderLayout());JLabel label = new JLabel("testing");label.setPreferredSize(new Dimension(100, 100));dialogPanel.add(label, BorderLayout.CENTER);return dialogPanel;}
}

1.2 使用dialog

if (new SampleDialogWrapper().showAndGet()) {// user pressed OK}

2. 默认 dialog

也可以使用idea默认的dialog,简单方便,主要是不用自己写!只要不是自己写的就怎么都是香的 ~ . ~

2.1 com.intellij.openapi.ui.Messages

这是 JetBrains 提供的工具类,官方介绍如下
Provides several default notification dialogs (“OK|Cancel”) as well as simple input dialogs.(提供几个默认的通知对话框(“确定|取消”)以及简单的输入对话框。)

下面是这个类一些简单的方法 — 看看方法名就大概知道啥功能

代码如下(示例):

类似文本域输入框

    // 方法参数如下 public static @NlsSafe String showMultilineInputDialog(Project project,@DialogMessage String message,@DialogTitle String title,@Nullable @NonNls String initialValue,@Nullable Icon icon,@Nullable InputValidator validator)// 调用方法如下// userInputString strMysqlColumns = Messages.showMultilineInputDialog(project, "Enter the column you need to add salt","xyang", "example:\n" +"\t user_id,\n " +"\t user_name", Messages.getInformationIcon(), null);

实际效果

可能有小伙伴可能会疑惑,Project 这个参数…不明白的建议看看我前俩篇文章

  • idea 自定义插件 工具面板
  • IDEA-插件开发 入门篇

单行输入框


// 方法如下
public static @NlsSafe String showInputDialog(@Nullable Project project,@DialogMessage String message,@DialogTitle String title,@Nullable Icon icon)// 调用逻辑如下
String prefix = Messages.showInputDialog(project, "Enter the prefix you need to add","xyang", Messages.getInformationIcon());

实际效果如下


总结

还有很多各种各样的 dialogs,这里就不一一演示了,很多方法看方法名都大概能知道意思

idea-插件开发 Dialogs相关推荐

  1. android phonegap插件开发方法 plugin

    2019独角兽企业重金招聘Python工程师标准>>> android phonegap插件开发方法 plugin 分类: phonegap 2014-03-03 22:41  59 ...

  2. [转]Eclipse插件开发之基础篇(2) 第一个Eclipse插件

    原文地址:http://www.cnblogs.com/liuzhuo/archive/2010/08/15/eclipse_plugin_1_1_1.html 在Eclipse中使用PDE(Plug ...

  3. Eclipse入门-- Eclipse的使用简介及插件开发

    Eclipse入门--  Eclipse的使用简介及插件开发 内容: 一.Eclipse简介  1.文件存放  2.Eclipse开发环境  3.编译与运行  4.版本管理  5.使用插件 二.开发E ...

  4. eclipse java 插件开发_Eclipse插件开发之基础篇(2) 第一个Eclipse插件

    在Eclipse中使用PDE(Plugin Development Environment)进行插件开发.在PDE中为大家准备了几个模板供大家参考.第一步咱们先利用模板制作一个简单的插件作为和PDE的 ...

  5. ATS插件开发中内存泄露问题的解决方法探讨

    接触ATS开发已经有几年了,开发过内核的模块,也从事过插件的开发.内存泄露问题一直是一个困扰大多数ATS开发者的头疼的问题,下面说说我自己的感受和思考.这里这关注ATS插件开发这个话题.源码的exam ...

  6. jQuery插件开发 - 其实很简单

    [前言] jQuery已经被广泛使用,凭借其简洁的API,对DOM强大的操控性,易扩展性越来越受到web开发人员的喜爱,我在社区也发布了很多的jQuery插件,经常有人询问一些技巧,因此干脆写这么一篇 ...

  7. jquery 插件开发的作用域及基础

    2019独角兽企业重金招聘Python工程师标准>>> 之前一直有开发jquery插件的冲动,所以一直想学习如何进行插件开发,最近一个项目需要使用图片上传组件及自动无限下拉组件,百度 ...

  8. Nutch插件开发及发布流程

    2019独角兽企业重金招聘Python工程师标准>>>  一,插件开发流程: 1,Nutch开发客户端环境搭建 2,plugin的源代码则保存在/src/java/org/apach ...

  9. 深入理解 Mybatis 插件开发

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:风一样的码农 cnblogs.com/chenpi/p/10 ...

  10. 【直播回顾】蚂蚁金服高级开发工程师萧恺:IDEA 插件开发入门教程

    主讲人:萧恺(蚂蚁金服-支付宝事业群-高级开发工程师) 本名:肖汉松 讲师介绍: 热爱阅读,喜欢挑战,热衷尝试新的技术,关注技术背后的原理. 关注领域:Java 服务端开发,分布式系统 关注语言:Ja ...

最新文章

  1. golang实践LSM相关内容
  2. java耗时任务有哪些,java后台耗时任务多线程返回结果
  3. SQL Server镜像自动生成脚本
  4. Java实现图片去噪和灰度的类
  5. element-ui使用导航栏跳转路由用法
  6. 关于Binder的点点滴滴(二)
  7. 云服务器zabbix server报错:Lack of free swap on Zabbix server
  8. mdl文件是c语言,MDL文件扩展名 - 什么是.mdl以及如何打开? - ReviverSoft
  9. php fckeditor,PHP FCKeditor使用说明
  10. Tar的详细用法(转自Linux伊甸园)
  11. 怎么保存html,怎样保存网页?
  12. c语言小熊时钟报告,C语言——小熊时钟.doc
  13. c++最近公共祖先LCA(倍增算法和tarjan)
  14. CompletableFuture学习
  15. 谈谈小程序的赚钱方式
  16. Tushare库之Libor拆借利率
  17. 克莱姆V(克莱姆相关系数、克莱姆关联系数、独立系数)的MATLAB计算
  18. 移动学习——当代E-Learning的新领域
  19. css动画结束闪烁,CSS秘密花园: 闪烁动画
  20. LeetCode刷题(154)~二进制链表转整数

热门文章

  1. mysql 过滤微信昵称表情符号_js 过滤微信昵称的表情符号
  2. 代写品牌故事四步写作方法
  3. 用PROC FCMP创建函数
  4. SQL Server忘记密码后成功重置密码的方法
  5. 利用函数求字符串长度
  6. 考研作息时间安排表(19通信考研党)
  7. 一文读懂ssh,tomcat,LANP,LNMP,ftp,dns等常见的环境配置(运维工程师必看)
  8. linux nodejs 502错误,node.js – NPM安装失败,出现502错误
  9. 你怎么看:就算老公一毛钱股份都没拿到,在我心里,他依然是最牛逼的创业者...
  10. c语言 程序设计一篇,用c语言编程任务br/请编写一个程序,从输入中读取一篇中文文 爱问知识人...