文件选择框本来用的是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);
}
}
相关推荐
SWT(Standard Widget Toolkit)是Eclipse项目提供的一种用于创建Java图形用户界面(GUI)的开源库,它提供了...SWT还提供了许多高级特性,如Tree的拖放操作、图像支持、检查框等等,可以根据需求进行深入学习和使用。
SWT是Eclipse基金会提供的一种开源GUI库,它是Java AWT和Swing之外的一个替代选择。SWT设计目标是提供一个更高效、更原生的用户界面,因为它直接与操作系统API交互,从而可以实现更好的性能和与平台的集成。在SWT中...
在这个名为“swt Tree 例子项目代码”的工程中,我们主要关注的是如何使用`org.eclipse.swt.widgets.Tree`类来创建和管理树形结构的数据展示。 `Tree`是SWT中的一个关键组件,用于构建类似于Windows资源管理器或...
在SWT中,Tree组件用于展示层次结构的数据,类似于Windows资源管理器中的文件系统视图。本教程将通过一个完整的SWT Tree实例,帮助新手理解如何创建、操作和自定义SWT Tree。 首先,我们来分析给定的文件列表: 1....
- **列表框(List)**:`new List(parent, style)`创建一个可滚动的列表,用户可以选择其中的一项或多项。 这些组件都继承自`Composite`类,因此可以嵌套在其他容器中,实现复杂的界面布局。通过组合这些组件,...
- **库文件解压**:使用`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 的理解。 - **案例**: - **Hello World 示例**: 最基础的应用程序,展示了如何使用 SWt 创建一个带有简单文本的窗口。 - **登录界面**: 实现了一个具有用户名和...
SWT提供了各种内置对话框,如`MessageDialog`、`FileDialog`、`ColorDialog`等,方便用户进行消息提示、文件选择和颜色选取等操作。 ### SWT与Eclipse Eclipse是基于SWT构建的开源集成开发环境(IDE),它扩展了...
4. **事件驱动模型**:SWT采用事件驱动模型,允许开发者对用户交互进行处理,例如点击按钮、选择菜单项等。 5. **可扩展性**:SWT允许开发者通过编写插件来扩展其功能,以满足特定需求。 **SWT与Java Swing的比较*...
- **从JDK的自带例子中学习Applet和图形界面编程** JDK(Java Development Kit)中包含了丰富的示例代码,这些示例可以帮助开发者更好地理解Applet的工作原理及其与图形界面的交互方式。 #### 使用Matisse4...
Java在GUI开发方面提供了多种选择,包括AWT、Swing和SWT等。这些框架各有特点,适应不同的开发需求: - **AWT (Abstract Window Toolkit)**:这是Java早期提供的GUI开发工具包,主要依赖于底层操作系统提供的图形...
Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...
### 通过例子学习Eclipse RCP开发 #### Eclipse RCP 概览 Eclipse RCP (Rich Client Platform) 是一种用于构建高度可定制且功能丰富的应用程序的框架。它基于插件模型,允许开发者通过扩展点(extension points)...
3. 设计用户界面:使用SWT(Standard Widget Toolkit)和JFace库来创建UI部件,如视图和编辑器。 四、透视图与工作流 透视图允许用户根据任务需求调整窗口布局。你可以创建新的透视图,并通过`IPerspectiveFactory`...
- **对话框(Dialog)**:可能有消息对话框、选择对话框和输入对话框的示例。 - **菜单和工具栏(Menu & Toolbar)**:展示如何创建和使用菜单项、下拉菜单和工具栏按钮。 - **图像和图像按钮(Image & ImageButton...
Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码...
Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码...
Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码...
Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码,文件操作,压缩包查看 Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码...