java看图软件_SWT(JFace) 图片浏览器 实现代码

代码如下:

ImageViewer.java

package swt_jface.demo11;

import org.eclipse.swt.SWT;

import org.eclipse.swt.events.PaintEvent;

import org.eclipse.swt.events.PaintListener;

import org.eclipse.swt.graphics.GC;

import org.eclipse.swt.graphics.Image;

import org.eclipse.swt.graphics.Point;

import org.eclipse.swt.layout.GridData;

import org.eclipse.swt.layout.GridLayout;

import org.eclipse.swt.printing.PrintDialog;

import org.eclipse.swt.printing.Printer;

import org.eclipse.swt.printing.PrinterData;

import org.eclipse.swt.widgets.Canvas;

import org.eclipse.swt.widgets.Display;

import org.eclipse.swt.widgets.Event;

import org.eclipse.swt.widgets.FileDialog;

import org.eclipse.swt.widgets.Listener;

import org.eclipse.swt.widgets.Shell;

import org.eclipse.swt.widgets.ToolBar;

import org.eclipse.swt.widgets.ToolItem;

public class ImageViewer {

Display display = new Display();

Shell shell = new Shell(display);

Canvas canvas;

Image image;

String fileName;

public ImageViewer() {

shell.setText("Image viewer");

shell.setLayout(new GridLayout(1, true));

ToolBar toolBar = new ToolBar(shell, SWT.FLAT);

ToolItem itemOpen = new ToolItem(toolBar, SWT.PUSH);

itemOpen.setText("Open");

itemOpen.addListener(SWT.Selection, new Listener() {

public void handleEvent(Event event) {

FileDialog dialog = new FileDialog(shell, SWT.OPEN);

String file = dialog.open();

if (file != null) {

if (image != null)

image.dispose();

image = null;

try {

image = new Image(display, file);

} catch (RuntimeException e) {

}

if (image != null) {

fileName = file;

} else {

System.err.println(

"Failed to load image from file: " + file);

}

canvas.redraw();

}

}

});

ToolItem itemPrintPreview = new ToolItem(toolBar, SWT.PUSH);

itemPrintPreview.setText("Preview");

itemPrintPreview.addListener(SWT.Selection, new Listener() {

public void handleEvent(Event event) {

ImagePrintPreviewDialog dialog =

new ImagePrintPreviewDialog(ImageViewer.this);

dialog.open();

}

});

ToolItem itemPrint = new ToolItem(toolBar, SWT.PUSH);

itemPrint.setText("Print");

itemPrint.addListener(SWT.Selection, new Listener() {

public void handleEvent(Event event) {

print();

}

});

canvas = new Canvas(shell, SWT.BORDER);

canvas.setBackground(display.getSystemColor(SWT.COLOR_WHITE));

canvas.setLayoutData(new GridData(GridData.FILL_BOTH));

canvas.addPaintListener(new PaintListener() {

public void paintControl(PaintEvent e) {

if (image == null) {

e.gc.drawString("No image", 0, 0);

} else {

e.gc.drawImage(image, 0, 0);

}

}

});

image = new Image(display, "C:/icons/scene.jpg");

fileName = "scene.jpg";

shell.setSize(500, 400);

shell.open();

while (!shell.isDisposed()) {

if (!display.readAndDispatch()) {

display.sleep();

}

}

display.dispose();

}

void print() {

PrintDialog dialog = new PrintDialog(shell);

PrinterData printerData = dialog.open();

if (printerData == null) return;

Printer printer = new Printer(printerData);

print(printer, null);

}

void print(final Printer printer, PrintMargin printMargin) {

if (image == null) return;

final Point printerDPI = printer.getDPI();

final Point displayDPI = display.getDPI();

System.out.println(displayDPI + " " + printerDPI);

final PrintMargin margin = (printMargin == null ? PrintMargin.getPrintMargin(printer, 1.0) : printMargin);

Thread printThread = new Thread() {

public void run() {

if (!printer.startJob(fileName)) {

System.err.println("Failed to start print job!");

printer.dispose();

return;

}

GC gc = new GC(printer);

if (!printer.startPage()) {

System.err.println("Failed to start a new page!");

gc.dispose();

return;

} else {

int imageWidth = image.getBounds().width;

int imageHeight = image.getBounds().height;

double dpiScaleFactorX = printerDPI.x * 1.0 / displayDPI.x;

double dpiScaleFactorY = printerDPI.y * 1.0 / displayDPI.y;

double imageSizeFactor =

Math.min(

1,

(margin.right - margin.left)

* 1.0

/ (dpiScaleFactorX * imageWidth));

imageSizeFactor =

Math.min(

imageSizeFactor,

(margin.bottom - margin.top)

* 1.0

/ (dpiScaleFactorY * imageHeight));

gc.drawImage(

image,

0,

0,

imageWidth,

imageHeight,

margin.left,

margin.top,

(int) (dpiScaleFactorX * imageSizeFactor * imageWidth),

(int) (dpiScaleFactorY

* imageSizeFactor

* imageHeight));

gc.dispose();

}

printer.endPage();

printer.endJob();

printer.dispose();

System.out.println("Printing job done!");

}

};

printThread.start();

}

public static void main(String[] args) {

new ImageViewer();

}

}

ImagePrintPreviewDialog.java

package swt_jface.demo11;

import org.eclipse.swt.SWT;

import org.eclipse.swt.events.PaintEvent;

import org.eclipse.swt.events.PaintListener;

import org.eclipse.swt.graphics.Point;

import org.eclipse.swt.graphics.Rectangle;

import org.eclipse.swt.layout.GridData;

import org.eclipse.swt.layout.GridLayout;

import org.eclipse.swt.printing.PrintDialog;

import org.eclipse.swt.printing.Printer;

import org.eclipse.swt.printing.PrinterData;

import org.eclipse.swt.widgets.Button;

import org.eclipse.swt.widgets.Canvas;

import org.eclipse.swt.widgets.Combo;

import org.eclipse.swt.widgets.Dialog;

import org.eclipse.swt.widgets.Event;

import org.eclipse.swt.widgets.Label;

import org.eclipse.swt.widgets.Listener;

import org.eclipse.swt.widgets.Shell;

public class ImagePrintPreviewDialog extends Dialog {

ImageViewer viewer;

Shell shell;

Canvas canvas;

Printer printer;

PrintMargin margin;

Combo combo;

public ImagePrintPreviewDialog(ImageViewer viewer) {

super(viewer.shell);

this.viewer = viewer;

}

public void open() {

shell =

new Shell(

viewer.shell,

SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL | SWT.RESIZE);

shell.setText("Print preview");

shell.setLayout(new GridLayout(4, false));

final Button buttonSelectPrinter = new Button(shell, SWT.PUSH);

buttonSelectPrinter.setText("Select a printer");

buttonSelectPrinter.addListener(SWT.Selection, new Listener() {

public void handleEvent(Event event) {

PrintDialog dialog = new PrintDialog(shell);

PrinterData printerData = dialog.open();

if (printerData == null) return;

final Printer printer = new Printer(printerData);

setPrinter(

printer,

Double.parseDouble(

combo.getItem(combo.getSelectionIndex())));

}

});

new Label(shell, SWT.NULL).setText("Margin in inches: ");

combo = new Combo(shell, SWT.READ_ONLY);

combo.add("0.5");

combo.add("1.0");

combo.add("1.5");

combo.add("2.0");

combo.add("2.5");

combo.add("3.0");

combo.select(1);

combo.addListener(SWT.Selection, new Listener() {

public void handleEvent(Event event) {

double value =

Double.parseDouble(

combo.getItem(combo.getSelectionIndex()));

setPrinter(printer, value);

}

});

final Button buttonPrint = new Button(shell, SWT.PUSH);

buttonPrint.setText("Print");

buttonPrint.addListener(SWT.Selection, new Listener() {

public void handleEvent(Event event) {

if (printer == null)

viewer.print();

else

viewer.print(printer, margin);

shell.dispose();

}

});

canvas = new Canvas(shell, SWT.BORDER);

GridData gridData = new GridData(GridData.FILL_BOTH);

gridData.horizontalSpan = 4;

canvas.setLayoutData(gridData);

canvas.addPaintListener(new PaintListener() {

public void paintControl(PaintEvent e) {

int canvasBorder = 20;

if (printer == null || printer.isDisposed()) return;

Rectangle rectangle = printer.getBounds();

Point canvasSize = canvas.getSize();

double viewScaleFactor =

(canvasSize.x - canvasBorder * 2) * 1.0 / rectangle.width;

viewScaleFactor =

Math.min(

viewScaleFactor,

(canvasSize.y - canvasBorder * 2)

* 1.0

/ rectangle.height);

int offsetX =

(canvasSize.x - (int) (viewScaleFactor * rectangle.width))

/ 2;

int offsetY =

(canvasSize.y - (int) (viewScaleFactor * rectangle.height))

/ 2;

e.gc.setBackground(

shell.getDisplay().getSystemColor(SWT.COLOR_WHITE));

e.gc.fillRectangle(

offsetX,

offsetY,

(int) (viewScaleFactor * rectangle.width),

(int) (viewScaleFactor * rectangle.height));

e.gc.setLineStyle(SWT.LINE_DASH);

e.gc.setForeground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));

int marginOffsetX = offsetX + (int) (viewScaleFactor * margin.left);

int marginOffsetY = offsetY + (int) (viewScaleFactor * margin.top);

e.gc.drawRectangle(

marginOffsetX,

marginOffsetY,

(int) (viewScaleFactor * (margin.right - margin.left)),

(int) (viewScaleFactor * (margin.bottom - margin.top)));

if (viewer.image != null) {

int imageWidth = viewer.image.getBounds().width;

int imageHeight = viewer.image.getBounds().height;

double dpiScaleFactorX =

printer.getDPI().x

* 1.0

/ shell.getDisplay().getDPI().x;

double dpiScaleFactorY =

printer.getDPI().y

* 1.0

/ shell.getDisplay().getDPI().y;

double imageSizeFactor =

Math.min(

1,

(margin.right - margin.left)

* 1.0

/ (dpiScaleFactorX * imageWidth));

imageSizeFactor =

Math.min(

imageSizeFactor,

(margin.bottom - margin.top)

* 1.0

/ (dpiScaleFactorY * imageHeight));

e.gc.drawImage(

viewer.image,

0,

0,

imageWidth,

imageHeight,

marginOffsetX,

marginOffsetY,

(int) (dpiScaleFactorX

* imageSizeFactor

* imageWidth

* viewScaleFactor),

(int) (dpiScaleFactorY

* imageSizeFactor

* imageHeight

* viewScaleFactor));

}

}

});

shell.setSize(400, 400);

shell.open();

setPrinter(null, 1.0);

while (!shell.isDisposed()) {

if (!shell.getDisplay().readAndDispatch()) {

shell.getDisplay().sleep();

}

}

}

void setPrinter(Printer printer, double marginSize) {

if (printer == null) {

printer = new Printer(Printer.getDefaultPrinterData());

}

this.printer = printer;

margin = PrintMargin.getPrintMargin(printer, marginSize);

canvas.redraw();

}

}

package swt_jface.demo11;

import org.eclipse.swt.SWT;

import org.eclipse.swt.events.PaintEvent;

import org.eclipse.swt.events.PaintListener;

import org.eclipse.swt.graphics.Point;

import org.eclipse.swt.graphics.Rectangle;

import org.eclipse.swt.layout.GridData;

import org.eclipse.swt.layout.GridLayout;

import org.eclipse.swt.printing.PrintDialog;

import org.eclipse.swt.printing.Printer;

import org.eclipse.swt.printing.PrinterData;

import org.eclipse.swt.widgets.Button;

import org.eclipse.swt.widgets.Canvas;

import org.eclipse.swt.widgets.Combo;

import org.eclipse.swt.widgets.Dialog;

import org.eclipse.swt.widgets.Event;

import org.eclipse.swt.widgets.Label;

import org.eclipse.swt.widgets.Listener;

import org.eclipse.swt.widgets.Shell;

public class ImagePrintPreviewDialog extends Dialog {

ImageViewer viewer;

Shell shell;

Canvas canvas;

Printer printer;

PrintMargin margin;

Combo combo;

public ImagePrintPreviewDialog(ImageViewer viewer) {

super(viewer.shell);

this.viewer = viewer;

}

public void open() {

shell =

new Shell(

viewer.shell,

SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL | SWT.RESIZE);

shell.setText("Print preview");

shell.setLayout(new GridLayout(4, false));

final Button buttonSelectPrinter = new Button(shell, SWT.PUSH);

buttonSelectPrinter.setText("Select a printer");

buttonSelectPrinter.addListener(SWT.Selection, new Listener() {

public void handleEvent(Event event) {

PrintDialog dialog = new PrintDialog(shell);

PrinterData printerData = dialog.open();

if (printerData == null) return;

final Printer printer = new Printer(printerData);

setPrinter(

printer,

Double.parseDouble(

combo.getItem(combo.getSelectionIndex())));

}

});

new Label(shell, SWT.NULL).setText("Margin in inches: ");

combo = new Combo(shell, SWT.READ_ONLY);

combo.add("0.5");

combo.add("1.0");

combo.add("1.5");

combo.add("2.0");

combo.add("2.5");

combo.add("3.0");

combo.select(1);

combo.addListener(SWT.Selection, new Listener() {

public void handleEvent(Event event) {

double value =

Double.parseDouble(

combo.getItem(combo.getSelectionIndex()));

setPrinter(printer, value);

}

});

final Button buttonPrint = new Button(shell, SWT.PUSH);

buttonPrint.setText("Print");

buttonPrint.addListener(SWT.Selection, new Listener() {

public void handleEvent(Event event) {

if (printer == null)

viewer.print();

else

viewer.print(printer, margin);

shell.dispose();

}

});

canvas = new Canvas(shell, SWT.BORDER);

GridData gridData = new GridData(GridData.FILL_BOTH);

gridData.horizontalSpan = 4;

canvas.setLayoutData(gridData);

canvas.addPaintListener(new PaintListener() {

public void paintControl(PaintEvent e) {

int canvasBorder = 20;

if (printer == null || printer.isDisposed()) return;

Rectangle rectangle = printer.getBounds();

Point canvasSize = canvas.getSize();

double viewScaleFactor =

(canvasSize.x - canvasBorder * 2) * 1.0 / rectangle.width;

viewScaleFactor =

Math.min(

viewScaleFactor,

(canvasSize.y - canvasBorder * 2)

* 1.0

/ rectangle.height);

int offsetX =

(canvasSize.x - (int) (viewScaleFactor * rectangle.width))

/ 2;

int offsetY =

(canvasSize.y - (int) (viewScaleFactor * rectangle.height))

/ 2;

e.gc.setBackground(

shell.getDisplay().getSystemColor(SWT.COLOR_WHITE));

e.gc.fillRectangle(

offsetX,

offsetY,

(int) (viewScaleFactor * rectangle.width),

(int) (viewScaleFactor * rectangle.height));

e.gc.setLineStyle(SWT.LINE_DASH);

e.gc.setForeground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));

int marginOffsetX = offsetX + (int) (viewScaleFactor * margin.left);

int marginOffsetY = offsetY + (int) (viewScaleFactor * margin.top);

e.gc.drawRectangle(

marginOffsetX,

marginOffsetY,

(int) (viewScaleFactor * (margin.right - margin.left)),

(int) (viewScaleFactor * (margin.bottom - margin.top)));

if (viewer.image != null) {

int imageWidth = viewer.image.getBounds().width;

int imageHeight = viewer.image.getBounds().height;

double dpiScaleFactorX =

printer.getDPI().x

* 1.0

/ shell.getDisplay().getDPI().x;

double dpiScaleFactorY =

printer.getDPI().y

* 1.0

/ shell.getDisplay().getDPI().y;

double imageSizeFactor =

Math.min(

1,

(margin.right - margin.left)

* 1.0

/ (dpiScaleFactorX * imageWidth));

imageSizeFactor =

Math.min(

imageSizeFactor,

(margin.bottom - margin.top)

* 1.0

/ (dpiScaleFactorY * imageHeight));

e.gc.drawImage(

viewer.image,

0,

0,

imageWidth,

imageHeight,

marginOffsetX,

marginOffsetY,

(int) (dpiScaleFactorX

* imageSizeFactor

* imageWidth

* viewScaleFactor),

(int) (dpiScaleFactorY

* imageSizeFactor

* imageHeight

* viewScaleFactor));

}

}

});

shell.setSize(400, 400);

shell.open();

setPrinter(null, 1.0);

while (!shell.isDisposed()) {

if (!shell.getDisplay().readAndDispatch()) {

shell.getDisplay().sleep();

}

}

}

void setPrinter(Printer printer, double marginSize) {

if (printer == null) {

printer = new Printer(Printer.getDefaultPrinterData());

}

this.printer = printer;

margin = PrintMargin.getPrintMargin(printer, marginSize);

canvas.redraw();

}

}

PrintMargin.java

package swt_jface.demo11;

import org.eclipse.swt.graphics.Point;

import org.eclipse.swt.graphics.Rectangle;

import org.eclipse.swt.printing.Printer;

public class PrintMargin {

public int left;

public int right;

public int top;

public int bottom;

private PrintMargin(int left, int right, int top, int bottom) {

this.left = left;

this.right = right;

this.top = top;

this.bottom = bottom;

}

static PrintMargin getPrintMargin(Printer printer, double margin) {

return getPrintMargin(printer, margin, margin, margin, margin);

}

static PrintMargin getPrintMargin(

Printer printer,

double marginLeft,

double marginRight,

double marginTop,

double marginBottom) {

Rectangle clientArea = printer.getClientArea();

Rectangle trim = printer.computeTrim(0, 0, 0, 0);

Point dpi = printer.getDPI();

int leftMargin = (int) (marginLeft * dpi.x) - trim.x;

int rightMargin =

clientArea.width

+ trim.width

- (int) (marginRight * dpi.x)

- trim.x;

int topMargin = (int) (marginTop * dpi.y) - trim.y;

int bottomMargin =

clientArea.height

+ trim.height

- (int) (marginBottom * dpi.y)

- trim.y;

return new PrintMargin(

leftMargin,

rightMargin,

topMargin,

bottomMargin);

}

public String toString() {

return "Margin { "

+ left

+ ", "

+ right

+ "; "

+ top

+ ", "

+ bottom

+ " }";

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
jZoomer开源项目主页:<br>http://code.google.com/p/jzoomer/<br>发布包下载地址:http://code.google.com/p/jzoomer/downloads/list<br>SVN下载地址:<br>http://jzoomer.googlecode.com/svn/trunk/<br><br>软件名:jZoomer<br>版本号:1.2.0<br>作者:talent_marquis<甜菜侯爵><br>联系方式:talent_marquis#163.com, marquisx.tz#google.com<br><br>简介:<br>jZoomer 是一款基于SWT/JFace的桌面应用软件<br>功能:<br>·动态放大镜功能<br>·静态图片缩放功能<br>·颜色拾取功能<br>·测量尺功能<br><br>特性:<br>·支持鼠标拖拽窗体和小控件<br>·支持国际化<br>·可扩展架构<br><br>日志:<br>20080621<br>1. Bug修正:<br> ·修正退出时报异常的Bug<br>2. 功能添加:<br> ·实现测量功能,可测量选中区域大小<br>3. 核心调整:<br> ·在system.properties中添加“tray.message.show”字段用以控制是否在托盘区显示提示信息<br> ·实现TrackerAction用以实现测量功能<br>4. 版本变更:<br> 版本升级为1.2.0<br><br>20080620<br>1. Bug修正:<br> ·修正程序退出时会报异常的Bug<br>2. 功能添加:<br> ·实现左键单击托盘区图标,主窗口开启/隐藏功能<br>3. 核心调整:<br>4. 版本变更:<br> 版本升级为1.1.4<br><br>20080619 2nd<br>1. Bug修正:<br> ·修正开始/暂停监视切换时有时会报空指针异常的错误<br>2. 功能添加:<br> ·实现静止时图片的缩放<br>3. 核心调整:<br> ·动态\静止开关中对图片处理的逻辑改变,以实现静止时图片的缩放功能<br> ·ZoomAction中zoomIn、zoomOut方法更新,支持对静止图片的缩放<br>4. 版本变更:<br> 版本升级为1.1.3<br> <br>20080619<br>1. Bug修正:<br> ·修正取色开启时鼠标双击取色后,色彩信息显示不正常的bug<br>2. 功能添加:<br> ·隐藏/取色后会在系统托盘区有信息提示<br>3. 核心调整:<br> ·在trayItem中加入tooltip用于辅助信息提示<br>4. 版本变更:<br> 版本升级为1.1.2<br><br>20080618 2nd<br>1. Bug修正:<br>2. 功能添加:<br> ·添加用户手册中文版V1.1<br> ·添加用户手册英文版V1.1<br> ·添加ant编译文件,使用“ant package”即可轻松打包发布文件<br> ·调整system.properties的排版,方便阅读<br>3. 核心调整:<br> ·加入fatjar.jar架包,用于打包编译<br>4. 版本变更:<br> 版本升级为1.1.1<br><br>20080618<br>1. Bux修正:<br> ·修正工程中加载lib路径不正确的bug<br> ·修正鼠标滚轮在停止取图监视时使用上的Bug<br> ·修正鼠标进入窗口后,还可以开启监视的Bug<br>2. 功能添加:<br> ·添加色彩信息面板<br> ·实现取色功能,用Ctrl+C开启,双击可以直接取色至剪贴板,单击暂停/开始取色<br>3. 核心调整:<br> ·在Google Code上添加了SVN地址用于维护,地址为:https://jzoomer.googlecode.com/svn/trunk/<br> ·重构鼠标拖拽Widget和面板的方法,增强其扩展性<br> ·添加ColorInfoPanel用于显示和拾取颜色<br> ·在ColorAction添加ColorInfoPanel相关的资源、逻辑和方法<br> ·添加TrackerAction用以实现图片大小的测量(未实现)<br>4. 版本变更:<br> 版本升级为1.1<br>5. 待做事项:<br> ·停止监控时图片的缩放<br> ·对图片大小的测量(width=xxxpx,height=xxxpx)<br> ·色彩信息面板样式的美化<br> ·build.xml文件<br><br>20080617<br>1. Bug修正:<br> ·修正进出窗口时会报异常的Bug<br>2. 功能添加:<br> ·将开始/暂停监控的快捷键更改为Ctrl+Z<br> ·支持容器内部控件的拖拽(按住Ctrl键)<br> ·支持拖拽容器时移动整个Shell(在空白处)<br> ·拖拽时鼠标变成小手形状<br> ·添加exit.confirm属性用以判断是否在退出时弹出提示框<br>3. 核心调整:<br> ·添加canvas用于对静止截图的处理<br> ·添加Tracker用于测量<br> ·添加Label用于信息提示<br> ·添加ColorAction用于对静止截图的处理<br>4. 版本变更:<br> 版本升级为1.03<br><br>20080616 2nd<br>1. Bug修正:<br> ·修正暂停监控时调整窗口大小,显示图像错乱的Bug<br>2. 功能添加:<br> ·添加设定背景色属性background.color<br>3. 核心调整:<br> ·去掉canvas,直接将采样图片放于container上,便于以后进一步在container上添加组件及操作<br>4. 版本变更:<br> ·版本升级为1.02<br><br>20080616<br>1. Bug修正:<br> ·暂未修正无法通过修改配置文件切换语言的Bug<br>2. 功能添加:<br> ·添加使用手册英文版v1.0<br> ·如需软件显示语言自动随系统语言切换,只需将System.properties中“locale”属性置空即可<br> ·调整缩放范围,使其既可放大屏幕也可缩小屏幕<br>3. 核心调整:<br> ·添加SWT/JFace的jar包到工程lib目录下<br> ·BasicWindow添加对鼠标移动点击的事件监听,以实现组件可用鼠标拖拽功能<br> ·BasicWindow添加在屏幕中央显示/随鼠标位置显示方法<br> ·更改屏幕采样并缩放的核心算法,使其缩放质量可以调整,支持缩小屏幕,且采样速度更快<br>4. 版本变更:<br> ·版本升级为1.0.1<br>5. 待做事项:<br> ·使用手册英文版<br> ·采样图片截取:只截取可见部分<br> ·对基类添加:随鼠标拖动功能,自动在屏幕中央显示功能,自动随鼠标显示功能<br> ·打包后无法通过修改配置文件切换语言(打包之前可以)<br> ·整理需要到的jar包,从eclipse中提取出来放到lib目录下<br> ·设置滚轮放大缩小可以开启/取消<br><br>20080615<br>1. Bug修正:<br> ·解决内存溢出Bug<br> ·解决字符串乱码Bug<br> `解决拖拽位置不正常Bug<br>2. 功能添加:<br> ·添加SystemPropertiesReader类,用于解析系统配置文件system.properties<br> ·完成软件的国际化,可根据需要切换英文/中文(暂时只能在启动前配置)<br> ·添加快捷键和部分图标<br> ·实现关闭到系统托盘效果<br>3. JZoomer v1.0 发布<br><br>20080614<br>1. 重新设计框架,提高其重用性<br>2. 实现功能:<br> ·字符串国际化<br> ·系统文件可编辑<br> ·系统托盘显示<br> ·支持滚轮缩放功能<br> ·控件拖拽功能<br> <br>20071227<br>1. JExplorer实现,初步了解JFace框架的设计思想,了解Action的使用方法<br><br>20070730<br>1. ColorPicker实现,其中含有部分放大镜功能,但有内存溢出Bug
Java中的FileDialog是一个标准的对话框,用于选择文件或目录。它提供了用户界面,让用户可以轻松地浏览文件系统并选择所需的文件或目录。 以下是一个简单的例子,演示如何使用FileDialog: ``` import java.awt.FileDialog; import java.awt.Frame; public class FileDialogExample { public static void main(String[] args) { Frame frame = new Frame(); FileDialog fileDialog = new FileDialog(frame, "Open File"); fileDialog.setVisible(true); String filename = fileDialog.getFile(); System.out.println("You selected file: " + filename); } } ``` 在上面的例子中,我们创建了一个Frame和一个FileDialog,并将其显示出来。当用户选择文件后,我们将文件名打印到控制台上。 SWT/JFaceEclipse平台的一部分,提供了一组丰富的UI组件和工具集。SWT/JFace中的FileDialog比Java中的FileDialog功能更丰富,例如可以设置文件过滤器、选择模式等。 以下是一个简单的例子,演示如何使用SWT/JFace中的FileDialog: ``` import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.Shell; public class FileDialogExample { public static void main(String[] args) { Display display = new Display(); Shell shell = new Shell(display); FileDialog dialog = new FileDialog(shell, SWT.OPEN); dialog.setFilterExtensions(new String[] {"*.txt", "*.xml"}); String fileName = dialog.open(); System.out.println("You selected file: " + fileName); display.dispose(); } } ``` 在上面的例子中,我们创建了一个Display、一个Shell和一个FileDialog,并将文件过滤器设置为只显示txt和xml文件。当用户选择文件后,我们将文件名打印到控制台上。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值