十. 图形界面(GUI)设计11.对话框
对话框是为了人机对话过程提供交互模式的工具。应用程序通过对话框,或给用户提供信息,或从用户获得信息。对话框是一个临时窗口,可以在其中放置用于得到用户输入的控件。在Swing中,有两个对话框类,它们是JDialog类和JOptionPane类。JDialog类提供构造并管理通用对话框;JOptionPane类给一些常见的对话框提供许多便于使用的选项,例如,简单的“yes-no”对话框等。
JDialog类
JDialog类作作对话框的基类。对话框与一般窗口不同,对话框依赖其他窗口,当它所依赖的窗口消失或最小化时,对话框也将消失;窗口还原时,对话框又会自动恢复。
对话框分为强制和非强制两种。强制型对话框不能中断对话过程,直至对话框结束,才让程序响应对话框以外的事件。非强制型对话框可以中断对话过程,去响应对话框以外的事件。强制型也称有模式对话框,非强制对话框也称非模式对话框。
JDialog对象也是一种容器,因此也可以给JDialog对话框指派布局管理器,对话框的默认布局为BoarderLayout布局。但组件不能直接加到对话框中,对话框也包含一个内容面板,应当把组件加到JDialog对象的内容面板中。由于对话框依赖窗口,因此要建立对话框,必须先要创建一个窗口。
JDialog类常用的构造方法有3个:
- JDialog(),构造一个初始化不可见的非强制型对话框。
- JDialog(JFramef,String s),构造一个初始化不可见的非强制型对话框,参数f设置对话框所依赖的窗口,参数s用于设置标题。通常先声明一个JDialog类的子类,然后创建这个子类的一个对象,就建立了一个对话框。
- JDialog(JFrame f,String s,boolean b),构造一个标题为s,初始化不可见的对话框。参数f设置对话框所依赖的窗口,参数b决定对话框是否强制或非强制型。
JDialog类的其他常用方法有以下几个:
- getTitle(),获取对话框的标题。
- setTitle(String s),设置对话框的标题。
- setModal(boolean b),设置对话框的模式。
- setSize(),设置框的大小。
- setVisible(boolean b),显示或隐藏对话框。
【例 11-16】小应用程序声明一个用户窗口类和对话框类,用户窗口有两个按钮和两个文本框,当点击某个按钮时,对应的对话框被激活。在对话框中输入相应信息,按对话框的确定按钮。确定按钮的监视方法,将对话框中输入的信息传送给用户窗口,并在用户窗口的相应文本框中显示选择信息(查看源文件)。
上述例子创建的是强制型对话框,改为非强制型对话框就允许用户在对话过程中暂停,与程序的其他部分进行交互。这样,在界面中可以看到部分对话的效果。
将上述例子改为非强制型对话框只要作少量的改动即可。首先是将对话框构造方法中的代码“super(F,s,true);”改为 “super(F,s,false);”。
第二个变化:原来是响应确定按钮事件时,才调用方法returnName(),将对话框得到的字符串返回给程序。现在当文本框输入选择字符串结束后,就应该立即调用该方法。为此,需要对文本框的输入事件作监视,为文本注册监视器:
public void actionPerformed(ActionEvent e){
if(e.getSource()==text){
MyWindow.returnName(text.getText www.jimeiyulept.com ());
}
else if(e.getSource()==done){
MyWindow.returnName(text.getText());
setVisible(false);
dispose();//清除资源
}
}
JOptionPane类
经常遇到非常简单的对话情况,为了简化常见对话框的编程,JOptionPane类定义了四个简单对话框类型,参见表11-4。JOptionPane类提供一组静态方法,让用户选用某种类型的对话框。下面的代码是选用确认对话框:
int result = JOptionPane.showConfirmDialog(parent,“确实要退出吗”, “退出确认“,JOptionPane.YES_NO_CANCEL_OPTION);
其中方法名的中间部分文字“Confirm”是创建对话框的类型,文字Confirm指明是选用确认对话框。将文字Confirm改为另外三种类型的某一个,就成为相应类型的对话框。上述代码的四个参数的意义是:第一个参数指定这个对话框的父窗口;第二个参数是对话框显示的文字;第三个参数是对话框的标题;最后一个参数指明对话框有三个按钮,分别为“是(Y)”,“否(N)”,和“撤销”。方法的返回结果是用户响应了这个对话框后的结果,参见表 11-5 给出的可能答案。
输入对话框以列表或文本框形式请求用户输入选择信息,用户可以从列表中选择选项或从文本框中输入信息。以下是一个从列表中选择运行项目的输入对话框的示意代码:
String result = (String)JOptionPane.showInputDialog(parent,
“请选择一项运动项目”, “这是运动项目选择对话框”,
JOptionPane.QUESTION_MESSAGE,null,
new Object[]{“踢足球“,“打篮球”,“跑步”,“跳绳”},“跑步”);
第四个参数是信息类型,参见11-6,第五个参数在这里没有特别的作用,总是用null;第六个参数定义了一个供选择的字符串数组,第七个参数是选择的默认值。对话框还包括“确定”和“撤销”按钮。
| 输入 | 通过文本框、列表或其他手段输入,另有“确定”和“撤销”按钮 |
| 确认 | 提出一个问题,待用户确认,另有“是(Y)”、“否(N)”和“撤销”按钮 |
| 信息 | 显示一条简单的信息,另有“确定”和“撤销”按钮 |
| 选项 | 显示一列供用户选择的选项 |
| YES_OPTION | 用户按了“是(Y)”按钮 |
| NO_OPTION | 用户按了“否(N)”按钮 |
| CANCEL_OPTION | 用户按了“撤销”按钮 |
| OK_OPTION | 用户按了“确定”按钮 |
| CLOSED_OPTION | 用户没按任何按钮,关闭对话框窗口 |
| PLAIN_MESSAGE | 不包括任何图标 |
| WARNING_MESSAGE | 包括一个警告图标 |
| QUESTION_MESSAGE | 包括一个问题图标 |
| INFORMATIN_MESSAGE | 包括一个信息图标 |
| ERROR_MESSAGE | 包括一个出错图标 |
有时,程序只是简单地输出一些信息,并不要求用户有反馈。这样的对话框可用以下形式的代码创建:
JOptionPane.showMessageDialog(parent, “这是一个Java程序”,
“我是输出信息对话框”,JOptionPane.PLAIN_MESSAGE);
上述代码中前三参数的意义与前面所述相同,最后参数是指定信息类型为不包括任何图标,参见表11-6。
十. 图形界面(GUI)设计11.对话框的更多相关文章
- 十. 图形界面(GUI)设计1.图形界面设计基础
早先程序使用最简单的输入输出方式,用户在键盘输入数据,程序将信息输出在屏幕上.现代程序要求使用图形用户界面(Graphical User Interface,GUI),界面中有菜单.按钮等,用户通过鼠 ...
- 十. 图形界面(GUI)设计3.标签、按钮和按钮事件
标签和按钮也许是图形界面中最常见的两种组件,按钮又总是与激发动作事件有关. 标签 标签(JLabel)是最简单的Swing组件.标签对象的作用是对位于其后的界面组件作说明.可以设置标签的属性,即前景色 ...
- 十. 图形界面(GUI)设计2.框架窗口
窗口是GUI编程的基础,小应用程序或图形界面的应用程序的可视组件都放在窗口中,在GUI中,窗口是用户屏幕的一部分,起着在屏幕中一个小屏幕的作用.有以下三种窗口: Applet窗口:Applet类管理这 ...
- 十. 图形界面(GUI)设计6.文本框和文本区
在图形界面中,文本框和文本区是用于信息输入输出的组件. 文本框 文本框(JTextField)是界面中用于输入和输出一行文本的框.JTextField类用来建立文本框.与文本框相关的接口是Action ...
- 十. 图形界面(GUI)设计7.文本框和文本区的输入输出
在GUI中,常用文本框和文本区实现数据的输入和输出.如果采用文本区输入,通常另设一个数据输入完成按钮.当数据输入结束时,点击这个按钮.事件处理程序利用getText()方法从文本区中读取字符串信息.对 ...
- 十. 图形界面(GUI)设计5.布局设计
在界面设计中,一个容器要放置许多组件,为了美观,为组件安排在容器中的位置,这就是布局设计.java.awt中定义了多种布局类,每种布局类对应一种布局的策略.常用的有以下布局类: FlowLayout, ...
- 十. 图形界面(GUI)设计12.滚动条
滚动条(JScrollBar)也称为滑块,用来表示一个相对值,该值代表指定范围内的一个整数.例如,用Word编辑文档时,编辑窗右边的滑块对应当前编辑位置在整个文档中的相对位置,可以通过移动选择新的编辑 ...
- 十. 图形界面(GUI)设计10.菜单
有两种类型的菜单:下拉式菜单和弹出式菜单.本章只讨论下拉式菜单编程方法.菜单与JComboBox和JCheckBox不同,它们在界面中是一直可见的.菜单与JComboBox的相同之处是每次只可选择一个 ...
- 十. 图形界面(GUI)设计9.列表和组合框
列表和组合框是又一类供用户选择的界面组件,用于在一组选择项目选择,组合框还可以输入新的选择. 列表 列表(JList)在界面中表现为列表框,是JList类或它的子类的对象.程序可以在列表框中加入多个文 ...
随机推荐
- windows10-seaslog安装笔记
1.seasLog在windows下的安装 首先,要下载seasLog的dll文件,下载地址:http://pecl.php.net/package/SeasLog 选择对应你的系统和php版本的d ...
- Substrings(hdu 4455)
题意: 给定一个序列ai,个数为n.再给出一系列w:对于每个w,求序列中,所有长度为w的连续子串中的权值和,子串权值为子串中不同数的个数. /* dp[i]表示长度为i的序列不同元素个数之和. 考虑从 ...
- codevs 3305 水果姐逛水果街Ⅱ&&codevs3006
题目描述 Description 水果姐第二天心情也很不错,又来逛水果街. 突然,cgh又出现了.cgh施展了魔法,水果街变成了树结构(店与店之间只有一条唯一的路径). 同样还是n家水果店,编号为1~ ...
- 【NOIP1999】邮票面值设计 dfs+dp
题目传送门 这道题其实就是找一波上界比较麻烦 用一波 背包可以推出上界mx 所以新加入的物品价值一旦大于mx+1,显然就会出现断层,所以可以以maxm+1为枚举上界,然后这样进行下一层的dfs. 这样 ...
- 破解wifi时遇到rtl8187 - [phy1]SIOCSIFFLAGS: Name not unique on network
当我使用我的ubuntu利用aircrack-ng套件进行wifi破解时 遇到如下问题 rtl8187 - [phy1]SIOCSIFFLAGS: Name not unique on network ...
- ubuntu安装mysqlclient
安装mysql: sudo apt-get install mysql-server mysql-client 然后mysql -V查看mysql是否安装成功 sudo apt-get install ...
- linux驱动基础系列--Linux I2c驱动分析
前言 主要是想对Linux I2c驱动框架有一个整体的把控,因此会忽略协议上的某些细节,同时里面涉及到的一些驱动基础,比如平台驱动.设备模型.sysfs等也不进行详细说明原理,涉及到i2c协议部分也只 ...
- python基础===正则表达式,常用函数re.split和re.sub
sub的用法: >>> rs = r'c..t' >>> re.sub(rs,'python','scvt dsss cvrt pocdst') 'scvt dss ...
- 解决:org.apache.tomcat.jni.Error: 70023: This function has not been implemented on this platform
centos7.3 启动tomcat 出现错误: 八月 08, 2017 4:58:47 下午 org.apache.catalina.core.StandardEngine startInterna ...
- docker从零开始网络(一)概述
概述 预计阅读时间: 4分钟 Docker容器和服务如此强大的原因之一是您可以将它们连接在一起,或者将它们连接到非Docker工作负载.Docker容器和服务甚至不需要知道它们部署在Docker上,或 ...