`
747017186
  • 浏览: 335379 次
社区版块
存档分类
最新评论

swt文件选择框例子

    博客分类:
  • java
 
阅读更多

文件选择框本来用的是java awt的JFileChooser去做的,但是由于java自己的写的文件选择框太丑,有时候选择文件路径的时候,会出现重命名的bug。所以用swt去实现这一点。

 

文件选择框功能代码:

 

package com.sysc.util.zhsj;

import java.awt.Canvas;
import java.awt.Container;
import java.io.File;
import javax.swing.JPanel;
import org.apache.log4j.Logger;
import org.eclipse.swt.SWT;
import org.eclipse.swt.awt.SWT_AWT;
import org.eclipse.swt.widgets.DirectoryDialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Shell;

/**
 * 使用swt文件对话框选择文件对话框
 * @author Administrator
 *
 */
public class SWTFileChooseUtil {
	/**
	 * 日志对象
	 */
	private static Logger logger = Logger.getLogger(SWTFileChooseUtil.class.getName());
	
	//文件类型
	public final static int file=1;
	
	//目录类型
	public final static int dir=2;
	
	//选择文件目录的文件
	private File fileFile=null;
	/**
	 * 构造方法,通过不同的type来选择不同的对话框
	 * @param jFrame,按钮最终属于哪个面板
	 * @param type,选择文件框的类型
	 * @param chooseFile 文件默认选择属性,可以记住上一次的选择
          由于当时做的时候使用的是java awt 和swt结合起来使用。所以要canvas面板
	 */
	public SWTFileChooseUtil(Container container,int type,File chooseFile){
		Canvas awtCanvas = new Canvas();//实例化一个canvas
		JPanel panel = new JPanel();
		panel.setLayout(null);
		awtCanvas.setLocation(1, 1);
		awtCanvas.setSize(2, 2);
		panel.add(awtCanvas);//加入面板
		container.add(panel);//把子面板加入到主awt面板当中
		
		Display swtDisplay = Display.getDefault();
		Shell swtShell = SWT_AWT.new_Shell(swtDisplay, awtCanvas);//把swt和awt结合起来
		swtShell.setSize(1,1);
		swtShell.setVisible(false);
		try {
			if(type==1){
				fileDig(swtShell,chooseFile);
			}else if(type==2){
				folderDig(swtShell,chooseFile);
			}
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
			System.out.println("swt选择目录出错!");
			logger.error(e, e);
		}finally{
			swtShell.dispose();
		}
	}
	
	/**
	 * 选择文件对话框
	 * @param parent
	 */
	private void fileDig(Shell parent,File chooseFile){
		//新建文件对话框,并设置为打开的方式
		FileDialog filedlg=new FileDialog(parent,SWT.OPEN);
		//设置文件对话框的标题
		filedlg.setText("文件选择");
		//设置初始路径
		if(chooseFile==null){
			filedlg.setFilterPath("SystemRoot");
		}else{
			filedlg.setFilterPath(chooseFile.getAbsolutePath());
		}
		//打开文件对话框,返回选中文件的绝对路径
		String selected=filedlg.open();
		System.out.println("您选中的文件路径为:"+selected);
		fileFile=new File(selected);
	}

	/**
	 * 选择目录对话框
	 * @param parent
	 */
	private void folderDig(Shell parent,File chooseFile){
		//新建文件夹(目录)对话框
		DirectoryDialog folderdlg=new DirectoryDialog(parent);
		//设置文件对话框的标题
		folderdlg.setText("文件选择");
		//设置初始路径
		if(chooseFile==null){
			folderdlg.setFilterPath("SystemDrive");
		}else{
			folderdlg.setFilterPath(chooseFile.getAbsolutePath());
		}
		//设置对话框提示文本信息
		folderdlg.setMessage("请选择相应的文件夹");
		//打开文件对话框,返回选中文件夹目录
		String selecteddir=folderdlg.open();
		if(selecteddir==null){
			return ;
		}
		else{
			System.out.println("您选中的文件夹目录为:"+selecteddir);
			fileFile=new File(selecteddir);
		}
	}

	/**
	 * 得到文件目录的方法
	 * @return
	 */
	public File getFileFile() {
		return fileFile;
	}
}

 主方法调用:

 

package com.sysc.data_ocr.zhsj;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import com.sysc.util.zhsj.SWTFileChooseUtil;

/**
 * 窗口时间监听,WindowAdapter是WindowListener的子类,直接通过内部类来规定这个事件
 * @author Administrator
 *
 */
public class jframeDemo{
	public static void main(String[] args) {
		//整体窗口的使用
		final JFrame jFrame=new JFrame("我的第一个窗体");
		jFrame.setSize(new Dimension(800, 500));//设置窗体的大小
		jFrame.setBackground(Color.BLACK);
		jFrame.setLocation(new Point(300, 300));//设置窗体显示的位置
		jFrame.setVisible(true);
		jFrame.setLayout(new FlowLayout());
		jFrame.addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosing(WindowEvent e) {//通过内部类来规定窗口的事件
				// TODO Auto-generated method stub
				System.out.println("正在关闭...");
				System.exit(0);
			}
		});//加上监听事件
		
		
		JButton button=new JButton("浏览按钮...");
		
		button.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
//jframe:button按钮所依附的面板
//SWTFileChooseUtil.dir:文件选择框的类型
//null:默认打开文件的路径
				SWTFileChooseUtil chooseUtil=new SWTFileChooseUtil(jFrame,SWTFileChooseUtil.dir,null);
				System.out.println("你所选择的:"+chooseUtil.getFileFile());
			}
		});
		jFrame.add(button);
	}
}

 

 

 

 

  • 大小: 16.9 KB
分享到:
评论

相关推荐

    swt创建tree的例子

    SWT(Standard Widget Toolkit)是Eclipse项目提供的一种用于创建Java图形用户界面(GUI)的开源库,它提供了...SWT还提供了许多高级特性,如Tree的拖放操作、图像支持、检查框等等,可以根据需求进行深入学习和使用。

    基于SWT和Hibernate的应用例子

    SWT是Eclipse基金会提供的一种开源GUI库,它是Java AWT和Swing之外的一个替代选择。SWT设计目标是提供一个更高效、更原生的用户界面,因为它直接与操作系统API交互,从而可以实现更好的性能和与平台的集成。在SWT中...

    swt Tree 例子项目代码

    在这个名为“swt Tree 例子项目代码”的工程中,我们主要关注的是如何使用`org.eclipse.swt.widgets.Tree`类来创建和管理树形结构的数据展示。 `Tree`是SWT中的一个关键组件,用于构建类似于Windows资源管理器或...

    SWT Tree 完整的树例子源码

    在SWT中,Tree组件用于展示层次结构的数据,类似于Windows资源管理器中的文件系统视图。本教程将通过一个完整的SWT Tree实例,帮助新手理解如何创建、操作和自定义SWT Tree。 首先,我们来分析给定的文件列表: 1....

    SWT界面编程知识汇总

    - **列表框(List)**:`new List(parent, style)`创建一个可滚动的列表,用户可以选择其中的一项或多项。 这些组件都继承自`Composite`类,因此可以嵌套在其他容器中,实现复杂的界面布局。通过组合这些组件,...

    Java程序设计之swt教程

    - **库文件解压**:使用`jar xf org.eclipse.swt.win32.win32.x86_3.2.1.v3235.jar`命令将SWT库文件解压至所需目录,解压后会得到四个DLL文件:`swt-win32-3235.dll`、`swt-awt-win32-3235.dll`、`swt-gdip-win32-...

    SWT/JFace开发入门指南

    - 通过一系列简单实用的例子,加深对 SWt 和 JFace 的理解。 - **案例**: - **Hello World 示例**: 最基础的应用程序,展示了如何使用 SWt 创建一个带有简单文本的窗口。 - **登录界面**: 实现了一个具有用户名和...

    SWT控件

    SWT提供了各种内置对话框,如`MessageDialog`、`FileDialog`、`ColorDialog`等,方便用户进行消息提示、文件选择和颜色选取等操作。 ### SWT与Eclipse Eclipse是基于SWT构建的开源集成开发环境(IDE),它扩展了...

    SWT 教程

    4. **事件驱动模型**:SWT采用事件驱动模型,允许开发者对用户交互进行处理,例如点击按钮、选择菜单项等。 5. **可扩展性**:SWT允许开发者通过编写插件来扩展其功能,以满足特定需求。 **SWT与Java Swing的比较*...

    MyEclipse图形界面开发Swing_SWT

    - **从JDK的自带例子中学习Applet和图形界面编程** JDK(Java Development Kit)中包含了丰富的示例代码,这些示例可以帮助开发者更好地理解Applet的工作原理及其与图形界面的交互方式。 #### 使用Matisse4...

    第十八章 图形界面开发--AWT,Swing,SWT.pdf

    Java在GUI开发方面提供了多种选择,包括AWT、Swing和SWT等。这些框架各有特点,适应不同的开发需求: - **AWT (Abstract Window Toolkit)**:这是Java早期提供的GUI开发工具包,主要依赖于底层操作系统提供的图形...

    java源码包---java 源码 大量 实例

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...

    通过例子学习Eclipse RCP开发

    ### 通过例子学习Eclipse RCP开发 #### Eclipse RCP 概览 Eclipse RCP (Rich Client Platform) 是一种用于构建高度可定制且功能丰富的应用程序的框架。它基于插件模型,允许开发者通过扩展点(extension points)...

    通过例子学习EclipseRCP开发

    3. 设计用户界面:使用SWT(Standard Widget Toolkit)和JFace库来创建UI部件,如视图和编辑器。 四、透视图与工作流 透视图允许用户根据任务需求调整窗口布局。你可以创建新的透视图,并通过`IPerspectiveFactory`...

    eswt 例子 实例 j2me

    - **对话框(Dialog)**:可能有消息对话框、选择对话框和输入对话框的示例。 - **菜单和工具栏(Menu & Toolbar)**:展示如何创建和使用菜单项、下拉菜单和工具栏按钮。 - **图像和图像按钮(Image & ImageButton...

    java源码包2

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码...

    java源码包3

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码...

    java源码包4

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码,文件操作,压缩包查看 Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码...

Global site tag (gtag.js) - Google Analytics