Swing用户界面组件—对话框

对话框分为模式对话框和无模式对话框两种。模式对话框在关闭前禁用程序的其它窗口,如文件选择器;无模式对话框则无此限制,比如工具栏。模式对话框比较简单,应该优先选用。

简单对话框

JOptionPane可以显示4种对话框,通过静态函数:

showMessageDialog
showConfirmDialog
showOptionDialog
showInputDialog

option对话框将会显示一组对象,比如一组按钮,让用户来选择。

消息类型:指定了消息前面的小图标,比如感叹号图标,问号图标
消息对象:要显示的消息,可以是字符串、图标、组件、Object[]以及其它类型(调用toString),其中通过组件可以提供比较强大的功能
按钮类型:对于message和input dialog只有一种按钮类型,其它的有四种类型DEFAULT_OPTION,YES_NO_OPTION,YES_NO_CANCEL_OPTION,OK_CANCEL_OPTION
返回值:看文档

书中的例子可以显示所有类型的简单对话框。

自定义对话框:由JDialog派生而来。

以about对话框为例,新建一个派生自JDialog的AboutDialog类,默认的对话框就是一个空的窗口,而且采用BorderLayout布局。然后向其中添加一个文本标签,和一个OK按钮,可以让OK按钮的监听器仅仅是把此对话框设为不可见(这样再次显示的时候便会快很多)。

在菜单里添加一项“about”,动作是把about对话框设为可见。出于效率考虑,可以对该对话框进行lazy初始化,也就是第一次点击about时进行初始化。

数据交换:从对话框中获得用户输入的信息。见书上的例子。注意,要判断用户是否点击了cancel,可以通过一个ok字段来判断。

文件选择器的使用

1)建立JFileChooser对象
2)设置初始目录 chooser.setCurrentDirectory(new File("."));
3)如果有一个希望用户选择的默认文件名,通过setSelectedFile设置
4)如果允许选择多个文件,setMultiSelectionEnabled
5)设置文件过滤器,只显示某些类型的文件,可以添加多个文件过滤器。javax.swing.filechooser.FileFilter
6)默认情况用户只能选择文件,而不能选择目录。如果需要选择目录,通过setFileSelectionMode设置
7)通过showOpenDialog或showSaveDialog来显示对话框
8)通过getSelectedFile或getSelectedFiles获取选中的文件

附加功能

1)对不同的文件显示不同的图标,通过setFileView方法。见书上的例子或者jdk的demo/jfc/FileChooserDemo目录下的ExampleFileView类
2)文件预览,通过setAccessory设置。但是要监听是否改选了其它文件,则通过javaBeans机制,chooser.addPropertyChangeListener(..)

颜色选择器: JColorChooser, 注意JColorChooser本身并不是一个对话框

1)最简单的使用方式:模式对话框
Color selectedColor = JColorChooser.showDialog(Component parent, String title, Color initialColor)
2)无模式对话框:通过JColorChooser.creatDialog来创建一个无模式对话框,包含一个ok键和一个cancel键,必须手工为这两个键编写监听器
3)自定义的对话框,创建一个JDialog和一个JColorChooser, 把colorChooser加入对话框。为colorChooser添加监听器,监视颜色的变化:

chooser.getSelectionModel().addChangeListener(new
ChangeListener()
{
public void stateChanged(ChangeEvent event)
{
//do something with chooser.getColor();
}
});


如果给你带来帮助,欢迎微信或支付宝扫一扫,赞一下。