swt浏览文件 显示文件目录 swt显示图片以及图片缩放处理

swt对文件的 操作


选择文件:

FileDialog fileselect=new FileDialog(shell);
                fileselect.setFilterNames(new String[]{"*.*","所有文件"}); 
                fileselect.setFilterExtensions(new String[]{"*.*","*.*"}); 
                String url=""; 
                url=fileselect.open();
                System.out.println(url);

选择文件夹:

SWT实现的文件夹选择窗口2008-09-09 09:20
protected void fileDig(Shell parent){
//新建文件对话框,并设置为打开的方式
FileDialog filedlg=new FileDialog(parent,SWT.OPEN);
//设置文件对话框的标题
filedlg.setText("文件选择");
//设置初始路径
filedlg.setFilterPath("SystemRoot");
//打开文件对话框,返回选中文件的绝对路径
String selected=filedlg.open();
System.out.println("您选中的文件路径为:"+selected);
}



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




//text实现换行

text = new Text(composite, SWT.BORDER | SWT.MULTI);

//一,改方法利用canvas实现,可以实现图片缩放,但是速度太慢,最终舍弃

Canvas canvas = new Canvas(this, SWT.BORDER); GridData gd_canvas = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1); gd_canvas.heightHint = 130; gd_canvas.widthHint = 148; canvas.setLayoutData(gd_canvas); Canvas canvas_1 = new Canvas(this, SWT.BORDER); GridData gd_canvas_1 = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1); gd_canvas_1.heightHint = 132; gd_canvas_1.widthHint = 144; canvas_1.setLayoutData(gd_canvas_1); new Label(this, SWT.NONE); Label lblNewLabel = new Label(this, SWT.NONE); lblNewLabel.setText("图片一"); new Label(this, SWT.NONE); Label lblNewLabel_1 = new Label(this, SWT.NONE); lblNewLabel_1.setText("图片二"); new Label(this, SWT.NONE); new Label(this, SWT.NONE); Button btnNewButton = new Button(this, SWT.NONE); btnNewButton.setText("上传文件"); btnNewButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { FileDialog fileselect=new FileDialog(getShell()); fileselect.setFilterNames(new String[]{"*.*","所有文件"}); fileselect.setFilterExtensions(new String[]{"*.*","*.*"}); String url=""; url=fileselect.open(); System.out.println(url); Image image = new Image(Display.getDefault(),url); final int imgWidth = image.getBounds().width; final int imgHeight = image.getBounds().height; canvas.addPaintListener(new PaintListener() { @Override public void paintControl(PaintEvent event) { event.gc.drawImage(image, 0, 0, imgWidth, imgHeight, 0, 0, event.width, event.height); } }); } }); new Label(this, SWT.NONE); Button btnNewButton_1 = new Button(this, SWT.NONE); btnNewButton_1.setText("上传文件"); btnNewButton_1.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { FileDialog fileselect=new FileDialog(getShell()); fileselect.setFilterNames(new String[]{"*.*","所有文件"}); fileselect.setFilterExtensions(new String[]{"*.*","*.*"}); String url=""; url=fileselect.open(); System.out.println(url); Image image = new Image(Display.getDefault(),url); final int imgWidth = image.getBounds().width; final int imgHeight = image.getBounds().height; canvas_1.addPaintListener(new PaintListener() { @Override public void paintControl(PaintEvent event) { event.gc.drawImage(image, 0, 0, imgWidth, imgHeight, 0, 0, event.width, event.height); } }); } });



二,利用直接显示图片 ,速度很快,缺点不能缩放图片

lblNewLabel_1.setImage(new Image(Display.getDefault(), "D:/2.jpg"));

1利用 canval属性

Image image = new Image(Display.getDefault(),"D:/2.jpg");
Canvas canvas = new Canvas(container, SWT.NONE);
final int imgWidth = image.getBounds().width;
final int imgHeight = image.getBounds().height;
canvas.addPaintListener(new PaintListener() {
@Override
public void paintControl(PaintEvent event) {
event.gc.drawImage(image, 0, 0, imgWidth, imgHeight, 0, 0, event.width, event.height);
event.gc.drawImage(image, imgWidth, imgHeight);
}
});

2利用 lable

Label label = new Label(this, SWT.NONE);
// Label label = new Label(shell, SWT.NONE);
// Label label = new Label(container, SWT.NONE);
label.setImage(new Image(Display.getDefault(), "D:/2.jpg"));

图片缩放


Image image = new Image(Display.getDefault(),url);
ImageData imageData =image.getImageData();

// Image newImage = new Image(image.getDevice(), imageData.scaledTo(imageData.width / 4, imageData.height / 4));

Image newImage = new Image(image.getDevice(), imageData.scaledTo(250,
180));
lblNewLabel_11.setImage(newImage);
//或者
item_1.setImage(new Image(display,image.getImageData().scaledTo((int)(width*0.22),(int)(height*0.22))));



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
################19/12/2007更新################### 新添加/重写的功能: 1. 已实现简单的剪切/复制/粘贴功能(尚不能和外界程序交互) 2. 添加创建新文件夹功能 3. 添加选择全部/文件/文件夹功能 4. 增加对创建新文件夹,重命名,删除,粘贴操作的异常处理 5. FileUtil中增加getFileCentent方法,用于读取文本文件内容 6. 重写AboutDialog 7. 重写ExitAction 8. 重写FileUtil中doPaste()方法,显著提高速度,修正拷贝文件时会导致文件不正常的严重Bug 9. 修正其他部分已发现Bug 10. 版本号升级为0.5 尚未实现的功能: 1. 与外界程序的交互 2. 拖拽 3. 国际化 4. 输入文件名时对特殊字符的验证 ################17/12/2007更新################### 新添加/重写的功能: 1. 排序功能已加入菜单栏和弹出菜单 2. 重写图标载入方法,已经可以实现图标动态载入和识别 3. 重写TableViewer中tableColumn生成载入方法,已经可以实现tablecolumn的半动态载入和识别 4. 实现动态识别文件类型 5. 进行删除操作时,对删除的文件进行识别 6. 更新添加了一些FileUtil中的方法,并且把这个类的注释写的差不多了 - - 注意: 1. icons文件夹内的文件结构有变化。 2. jar文件没有更新,如果需要打好包的jar文件请等我把功能都实现后的那个版本 - - 尚未实现的功能: 1. 剪切/复制/粘贴功能 2. 拖拽功能 3. 详尽的注释 4. 异常处理 5. 国际化 ################14/12/2007更新################### 已经实现的基本功能: 1. 树形浏览结构 2. 双击 运行程序/进入下一级菜单目录 3. 返回上一级菜单 4. 重命名 5. 刷新 6. 删除 7. 按文件名/大小/类型/最后修改日期排序 8. 对当前文件夹进行过滤操作 9. 对当前文件夹的简要统计 尚未实现的功能: 1. 剪切/复制/粘贴 2. 拖拽 3. 弹出菜单中的排序选项 4. 动态识别文件类型 5. 详尽的注释 已知的Bug: 1. TreeViewer进行目录切换时,TableViewer窗体有时会变成空白 2. 有特殊字符的过滤操作将导致异常 3. 重命名没有考虑特殊字符 4. 有大量文件(几百个以上)的目录会打开的很慢 5. 文件删除失败时没有提示###### 新添加/重写的功能: 1. 已实现简单的剪切/复制/粘贴功能(尚不能和外界程序交互) 2. 添加创建新文件夹功能 3. 添加选择全部/文件/文件夹功能 4. 重写AboutDialog 5. 增加对创建新文件夹,重命名,删除,粘贴操作的异常处理 6. 重写ExitAction 7. 修正部分已发现Bug 尚未实现的功能: 1. 与外界程序的交互 2. 拖拽 3. 国际化 4. 输入文件名时对特殊字符的验证

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值