SWT打开对话框

以打开pdf文件为例,安装windowbuilder,新建swt/jface项目,在新建swt Application Window,

 

public class OpenPdfUpdate {
	
	 /**
    *@see 初始化打开文件对话框,改写csharp
    *@param 是否允许多选
    *@return 返回打开文件的文件名
    */
	 public  String[] InitOpenFileDialog(boolean isMultiselect)
	 {
		 Display display =null;
		 Shell shell =null;
		 FileDialog dialog=null;
		
			 try {
				 display = new Display();
					shell = new Shell(display);
					

				String[] fileNames =null;
				if (isMultiselect == false) {
					dialog = new FileDialog(shell, SWT.OPEN);
					//Set dialog title
					dialog.setText("请选择要打开的单个文件");
					dialog.setFilterPath("c:\windows");//设置初始打开文件的路径
					// Set filter on .pdf files
					dialog.setFilterExtensions(new String[] { "*.pdf", "*.*" });
					//Put in a readable name for the filter
					dialog.setFilterNames(new String[] { "Pdf Files (*.pdf)",
							"All Files (*.*)" });
					fileNames=new String[1];
					fileNames[0]= dialog.open(); // 返回的全路径(路径+文件名)
					if (fileNames[0] == null) {
			             // User has cancelled, so quit and return
			         	MessageBox mg = new MessageBox(dialog.getParent(),
			                     SWT.ICON_WARNING| SWT.YES);
			         	mg.setText("Tips");
			             mg.setMessage("没有指定要打开的文件,或取消了打开文件!");
			             boolean done=mg.open() == SWT.YES;
					 }

				}
				if (isMultiselect == true) {
					dialog = new FileDialog(shell, SWT.MULTI);
					dialog.setText("请选择要打开的文件,按住Shift连续多选,按住Ctrl间隔多选");
					dialog.setFilterExtensions(new String[] { "*.pdf", "*.*" });
					dialog.setFilterNames(new String[] { "Pdf Files (*.pdf)",
							"All Files (*.*)" });
					//return last file name
					String saveFileName=dialog.open();//返回最后一个选择文件的全路径
					 if (saveFileName == null) {
			             // User has cancelled, so quit and return
			         	MessageBox mg = new MessageBox(dialog.getParent(),
			                     SWT.ICON_WARNING| SWT.YES);
			         	mg.setText("Tips");
			             mg.setMessage("没有指定要打开的文件,或取消了打开文件!");
			             boolean done=mg.open() == SWT.YES;
					 }
					 // root 
					String path = dialog.getFilterPath();//返回选择的路径,
					       这个和fileNames配合可以得到所有的文件的全路径
					//all file name
					fileNames = dialog.getFileNames();
					for (int index = 0; index < fileNames.length; index++) {
						fileNames[index] = path + fileNames[index];
					}
				}
				
				
				return fileNames;
			} 
			 finally
			{
	       
			display.dispose();
		    }
		
		
		
		
	 }
	/**
    *@see 通过打开文件对话框,用户单选文件,返回用户选择的文件名,包括完整路径
    *@return 完整路径的通过对话框选中的文件名字符串
    */
	public String[] readFileName()
	{
		
		
		String[] singleFileName=InitOpenFileDialog(false);
	    return singleFileName;
	    
	}
	/**
	    *@see 这里要求输入的对话框是多选,返回是选中的文件完整名构成的数据组
	    *@return 完整路径的通过对话框选中的文件名字符串数组
	    */
	public String[] readFileNames()
	{
		String[] multiFileName=InitOpenFileDialog(true);
	
	       return multiFileName;
	}
	public static void main(String[] args)
	{
		OpenPdfUpdate op=new OpenPdfUpdate();
		//读多个文件
		String[] mulFileName=op.readFileNames();
		for(int i=0;i<mulFileName.length;i++)
		{
			System.out.println(mulFileName[i]);
		}
		
		//读一个文件
		String[] oneString=op.readFileName();
		System.out.println(oneString[0]);
	}
	

}

参考:http://www.java2s.com/CN/Tutorial/Java/0280__SWT/OpenanOpenFileDialog.htm

参考:http://www.blogjava.net/dreamstone/archive/2007/08/09/134536.html



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值