11.7.1 选项对话框
创建选项对话框的步骤:
1.选择对话框的类型(消息,确认,选项,输入)
2.选择图标(错误,信息,警告,问题,无或者自定义)
3.选择消息(字符串,图标,自定义组件,或者他们的集合)
4.对于确认对话框,选择选项类型(默认,Yes/No,Yes/No/Cancel,OK/Cancel)
5.对于选项对话框。选择选项(字符串、图标,自定义组件)
6.对于输入对话框,选择文本框或是组合框
7.调用JOptionPane API中相应的方法
example:
int selection = JOptionPane.showConfirmDialog(parent,"Message","Title",JOptionPane.OK_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE);
if(selection == JOptionPane.OK_OPTION);
11.7.2 创建对话框
要想实现一个对话框,需要扩展JDialog类。这与应用程序窗口需要扩展JFrame的过程完全一样。具体过程如下:
1.在对话框构造器中,调用超类JDialog的构造器
2.添加对话框的用户界面组件
3.添加事件处理器
4.设置对话框的大小
example:
public class AboutDialog extends JDialog {
public AboutDialog(JFrame owner){
super(owner,"dialog test",true);
add(new JLabel("<html><h1><i>Core Java</i></h1><hr>By Cay Horstmann</html>"), BorderLayout.CENTER);
JPanel panel = new JPanel();
JButton ok = new JButton("OK");
ok.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
ok.setVisible(false);
}
});
panel.add(ok);
add(panel,BorderLayout.SOUTH);
setSize(250,150);
}
}
11.7.3 数据交换
11.7.4 文件对话框
建立文件对话框并获取用户选择信息的步骤
1.建立一个JFileChooser对象。与JDialog类的构造器不同,不需要指定父组件,可以在多个窗体中重用一个文件选择器。例如JFileChooser chooser = new JFileChooser();
2.调用setCurrentDirectory方法设置目录
例如要使用当前的工作目录:chooser.setCurrentDirectory(new File("."));
3.如果有一个希望用户选择的默认文件名,可以使用setSelectedFile方法指定:chooser.setSelectedFile(new File(filename));
4.如果允许用户在对话框中选择多个文件,需要调用setMultiSelectionEnabled方法。chooser.setMultiSelectionEnabled(true);
5.如果想让对话框只显示某种特定类型的文件,需要设置文件过滤器。
6.在默认情况下,用户只能在文件选择器中选择文件。如果希望用户选择目录,需要使用chooser.setFileSelectionMode方法
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
7.调用int result = chooser.showOpenDialog(parent);
或int result = chooser.showSaveDialog(parent);
显示对话框
也可以使用int result = chooser.showDialog(parent,"Select");
仅当用户确认、取消或者关闭对话框时这些调用才返回。返回值可以是JFileChooser.APPROVE_OPTION;JFileChooser.CANCEL_OPTION;JFileChooser.ERROR_OPTION;
8.调用getSelectedFile()或者chooser.getSelectedFiles()来获取用户选择的一个或多个文件,前者返回一个文件对象,后者返回一个文件对象数组。