zl程序教程

您现在的位置是:首页 >  前端

当前栏目

SWT(JFace)简易浏览器制作实现代码

浏览器代码 实现 简易 制作 swt JFace
2023-06-13 09:14:10 时间
代码如下:
BrowserExample.java
复制代码代码如下:

packageswt_jface.demo5;
importjava.text.MessageFormat;
importjava.util.MissingResourceException;
importorg.eclipse.swt.SWT;
importorg.eclipse.swt.SWTError;
importorg.eclipse.swt.browser.Browser;
importorg.eclipse.swt.browser.CloseWindowListener;
importorg.eclipse.swt.browser.LocationEvent;
importorg.eclipse.swt.browser.LocationListener;
importorg.eclipse.swt.browser.OpenWindowListener;
importorg.eclipse.swt.browser.ProgressEvent;
importorg.eclipse.swt.browser.ProgressListener;
importorg.eclipse.swt.browser.StatusTextEvent;
importorg.eclipse.swt.browser.StatusTextListener;
importorg.eclipse.swt.browser.TitleEvent;
importorg.eclipse.swt.browser.TitleListener;
importorg.eclipse.swt.browser.VisibilityWindowListener;
importorg.eclipse.swt.browser.WindowEvent;
importorg.eclipse.swt.graphics.Image;
importorg.eclipse.swt.graphics.Point;
importorg.eclipse.swt.graphics.Rectangle;
importorg.eclipse.swt.layout.FillLayout;
importorg.eclipse.swt.layout.FormAttachment;
importorg.eclipse.swt.layout.FormData;
importorg.eclipse.swt.layout.FormLayout;
importorg.eclipse.swt.widgets.Canvas;
importorg.eclipse.swt.widgets.Composite;
importorg.eclipse.swt.widgets.Display;
importorg.eclipse.swt.widgets.Event;
importorg.eclipse.swt.widgets.Label;
importorg.eclipse.swt.widgets.Listener;
importorg.eclipse.swt.widgets.ProgressBar;
importorg.eclipse.swt.widgets.Shell;
importorg.eclipse.swt.widgets.Text;
importorg.eclipse.swt.widgets.ToolBar;
importorg.eclipse.swt.widgets.ToolItem;
publicclassBrowserExample{
//staticResourceBundleresourceBundle=ResourceBundle.getBundle("examples_browser");
intindex;
booleanbusy;
Imageimages[];
Textlocation;
Browserbrowser;
staticfinalString[]imageLocations={
"eclipse01.bmp","eclipse02.bmp","eclipse03.bmp","eclipse04.bmp","eclipse05.bmp",
"eclipse06.bmp","eclipse07.bmp","eclipse08.bmp","eclipse09.bmp","eclipse10.bmp",
"eclipse11.bmp","eclipse12.bmp",};
staticfinalStringiconLocation="document.gif";

publicBrowserExample(Compositeparent){
finalDisplaydisplay=parent.getDisplay();
FormLayoutlayout=newFormLayout();
parent.setLayout(layout);
ToolBartoolbar=newToolBar(parent,SWT.NONE);
finalToolItemitemBack=newToolItem(toolbar,SWT.PUSH);
itemBack.setText(getResourceString("Back"));
finalToolItemitemForward=newToolItem(toolbar,SWT.PUSH);
itemForward.setText(getResourceString("Forward"));
finalToolItemitemStop=newToolItem(toolbar,SWT.PUSH);
itemStop.setText(getResourceString("Stop"));
finalToolItemitemRefresh=newToolItem(toolbar,SWT.PUSH);
itemRefresh.setText(getResourceString("Refresh"));
finalToolItemitemGo=newToolItem(toolbar,SWT.PUSH);
itemGo.setText(getResourceString("Go"));
location=newText(parent,SWT.BORDER);
images=newImage[]{newImage(display,"C:/icons/web/go.gif")};
finalCanvascanvas=newCanvas(parent,SWT.NO_BACKGROUND);
finalRectanglerect=images[0].getBounds();
canvas.addListener(SWT.Paint,newListener(){
publicvoidhandleEvent(Evente){
Pointpt=canvas.getSize();
e.gc.drawImage(images[index],0,0,rect.width,rect.height,0,0,pt.x,pt.y);
}
});
canvas.addListener(SWT.MouseDown,newListener(){
publicvoidhandleEvent(Evente){
browser.setUrl(getResourceString("Startup"));
}
});

display.asyncExec(newRunnable(){
publicvoidrun(){
if(canvas.isDisposed())return;
if(busy){
index++;
if(index==images.length)index=0;
canvas.redraw();
}
display.timerExec(150,this);
}
});
finalLabelstatus=newLabel(parent,SWT.NONE);
finalProgressBarprogressBar=newProgressBar(parent,SWT.NONE);
FormDatadata=newFormData();
data.top=newFormAttachment(0,5);
toolbar.setLayoutData(data);
data=newFormData();
data.left=newFormAttachment(0,0);
data.right=newFormAttachment(100,0);
data.top=newFormAttachment(canvas,5,SWT.DEFAULT);
data.bottom=newFormAttachment(status,-5,SWT.DEFAULT);
try{
browser=newBrowser(parent,SWT.NONE);
browser.setLayoutData(data);
}catch(SWTErrore){
Labellabel=newLabel(parent,SWT.CENTER|SWT.WRAP);
label.setText(getResourceString("BrowserNotCreated"));
label.setLayoutData(data);
}
data=newFormData();
data.width=24;
data.height=24;
data.top=newFormAttachment(0,5);
data.right=newFormAttachment(100,-5);
canvas.setLayoutData(data);
data=newFormData();
data.top=newFormAttachment(toolbar,0,SWT.TOP);
data.left=newFormAttachment(toolbar,5,SWT.RIGHT);
data.right=newFormAttachment(canvas,-5,SWT.DEFAULT);
location.setLayoutData(data);
data=newFormData();
data.left=newFormAttachment(0,5);
data.right=newFormAttachment(progressBar,0,SWT.DEFAULT);
data.bottom=newFormAttachment(100,-5);
status.setLayoutData(data);

data=newFormData();
data.right=newFormAttachment(100,-5);
data.bottom=newFormAttachment(100,-5);
progressBar.setLayoutData(data);
if(browser!=null){
itemBack.setEnabled(browser.isBackEnabled());
itemForward.setEnabled(browser.isForwardEnabled());

Listenerlistener=newListener(){
publicvoidhandleEvent(Eventevent){
ToolItemitem=(ToolItem)event.widget;
if(item==itemBack)browser.back();
elseif(item==itemForward)browser.forward();
elseif(item==itemStop)browser.stop();
elseif(item==itemRefresh)browser.refresh();
elseif(item==itemGo)browser.setUrl(location.getText());
}
};
browser.addLocationListener(newLocationListener(){
publicvoidchanged(LocationEventevent){
busy=true;
if(event.top)location.setText(event.location);
}
publicvoidchanging(LocationEventevent){
}
});
browser.addProgressListener(newProgressListener(){
publicvoidchanged(ProgressEventevent){
if(event.total==0)return;
intratio=event.current*100/event.total;
progressBar.setSelection(ratio);
busy=event.current!=event.total;
if(!busy){
index=0;
canvas.redraw();
}
}
publicvoidcompleted(ProgressEventevent){
itemBack.setEnabled(browser.isBackEnabled());
itemForward.setEnabled(browser.isForwardEnabled());
progressBar.setSelection(0);
busy=false;
index=0;
canvas.redraw();
}
});
browser.addStatusTextListener(newStatusTextListener(){
publicvoidchanged(StatusTextEventevent){
status.setText(event.text);
}
});
if(parentinstanceofShell){
finalShellshell=(Shell)parent;
browser.addTitleListener(newTitleListener(){
publicvoidchanged(TitleEventevent){
shell.setText(event.title+"-"+getResourceString("window.title"));
}
});
}
itemBack.addListener(SWT.Selection,listener);
itemForward.addListener(SWT.Selection,listener);
itemStop.addListener(SWT.Selection,listener);
itemRefresh.addListener(SWT.Selection,listener);
itemGo.addListener(SWT.Selection,listener);
location.addListener(SWT.DefaultSelection,newListener(){
publicvoidhandleEvent(Evente){
browser.setUrl(location.getText());
}
});
initialize(display,browser);
browser.setUrl(getResourceString("Startup"));
}
}
staticStringgetResourceString(Stringkey){
try{
return"key";
}catch(MissingResourceExceptione){
returnkey;
}catch(NullPointerExceptione){
return"!"+key+"!";
}
}
staticStringgetResourceString(Stringkey,Object[]args){
try{
returnMessageFormat.format(getResourceString(key),args);
}catch(MissingResourceExceptione){
returnkey;
}catch(NullPointerExceptione){
return"!"+key+"!";
}
}
staticvoidinitialize(finalDisplaydisplay,Browserbrowser){
browser.addOpenWindowListener(newOpenWindowListener(){
publicvoidopen(WindowEventevent){
System.out.println("Open");
Shellshell=newShell(display);
shell.setLayout(newFillLayout());
Browserbrowser=newBrowser(shell,SWT.NONE);
initialize(display,browser);
event.browser=browser;
}
});
browser.addVisibilityWindowListener(newVisibilityWindowListener(){
publicvoidhide(WindowEventevent){
}
publicvoidshow(WindowEventevent){
System.out.println("Show");
Browserbrowser=(Browser)event.widget;
Shellshell=browser.getShell();
if(event.location!=null)shell.setLocation(event.location);
if(event.size!=null){
Pointsize=event.size;
shell.setSize(shell.computeSize(size.x,size.y));
}
shell.open();
}
});
browser.addCloseWindowListener(newCloseWindowListener(){
publicvoidclose(WindowEventevent){
System.out.println("Close");
Browserbrowser=(Browser)event.widget;
Shellshell=browser.getShell();
shell.close();
}
});
}
publicvoiddispose(){
freeResources();
}
voidfreeResources(){
if(images!=null){
for(inti=0;i<images.length;++i){
finalImageimage=images[i];
if(image!=null)image.dispose();
}
images=null;
}
}
publicvoidsetFocus(){
location.setFocus();
}
publicstaticvoidmain(String[]args){

Displaydisplay=newDisplay();
Shellshell=newShell(display);
shell.setLayout(newFillLayout());
shell.setText("Browserexample");
BrowserExampleinstance=newBrowserExample(shell);
Imageicon=newImage(display,"C:/icons/web/go.gif");
shell.setImage(icon);
shell.open();
while(!shell.isDisposed()){
if(!display.readAndDispatch())
display.sleep();
}
icon.dispose();
instance.dispose();
display.dispose();
}
}


再看一个好一点的实现:
SWTBrowser.java
复制代码代码如下:

packageswt_jface.demo8;
importorg.eclipse.jface.action.Action;
importorg.eclipse.jface.action.ToolBarManager;
importorg.eclipse.jface.resource.ImageDescriptor;
importorg.eclipse.swt.SWT;
importorg.eclipse.swt.browser.Browser;
importorg.eclipse.swt.browser.CloseWindowListener;
importorg.eclipse.swt.browser.LocationEvent;
importorg.eclipse.swt.browser.LocationListener;
importorg.eclipse.swt.browser.OpenWindowListener;
importorg.eclipse.swt.browser.ProgressEvent;
importorg.eclipse.swt.browser.ProgressListener;
importorg.eclipse.swt.browser.StatusTextEvent;
importorg.eclipse.swt.browser.StatusTextListener;
importorg.eclipse.swt.browser.TitleEvent;
importorg.eclipse.swt.browser.TitleListener;
importorg.eclipse.swt.browser.VisibilityWindowListener;
importorg.eclipse.swt.browser.WindowEvent;
importorg.eclipse.swt.graphics.Image;
importorg.eclipse.swt.graphics.Point;
importorg.eclipse.swt.layout.FillLayout;
importorg.eclipse.swt.layout.GridData;
importorg.eclipse.swt.layout.GridLayout;
importorg.eclipse.swt.widgets.Button;
importorg.eclipse.swt.widgets.Composite;
importorg.eclipse.swt.widgets.Display;
importorg.eclipse.swt.widgets.Event;
importorg.eclipse.swt.widgets.Label;
importorg.eclipse.swt.widgets.Listener;
importorg.eclipse.swt.widgets.ProgressBar;
importorg.eclipse.swt.widgets.Shell;
importorg.eclipse.swt.widgets.Text;
importorg.eclipse.swt.widgets.ToolBar;
publicclassSWTBrowser{

Displaydisplay=newDisplay();
Shellshell=newShell(display);
TexttextLocation;
Browserbrowser;
LabellabelStatus;
publicSWTBrowser(){

shell.setLayout(newGridLayout());
ToolBartoolBar=newToolBar(shell,SWT.FLAT|SWT.RIGHT);
finalToolBarManagermanager=newToolBarManager(toolBar);
CompositecompositeLocation=newComposite(shell,SWT.NULL);
compositeLocation.setLayout(newGridLayout(3,false));
compositeLocation.setLayoutData(newGridData(GridData.FILL_HORIZONTAL));
LabellabelAddress=newLabel(compositeLocation,SWT.NULL);
labelAddress.setText("Address");
textLocation=newText(compositeLocation,SWT.SINGLE|SWT.BORDER);
textLocation.setLayoutData(newGridData(GridData.FILL_HORIZONTAL));
ButtonbuttonGo=newButton(compositeLocation,SWT.NULL);
buttonGo.setImage(newImage(shell.getDisplay(),"C:/icons/web/go.gif"));
browser=newBrowser(shell,SWT.BORDER);
browser.setLayoutData(newGridData(GridData.FILL_BOTH));
CompositecompositeStatus=newComposite(shell,SWT.NULL);
compositeStatus.setLayoutData(newGridData(GridData.FILL_HORIZONTAL));
compositeStatus.setLayout(newGridLayout(2,false));
labelStatus=newLabel(compositeStatus,SWT.NULL);
labelStatus.setText("Ready");
labelStatus.setLayoutData(newGridData(GridData.FILL_HORIZONTAL));
finalProgressBarprogressBar=newProgressBar(compositeStatus,SWT.SMOOTH);
ListeneropenURLListener=newListener(){
publicvoidhandleEvent(Eventevent){
browser.setUrl(textLocation.getText());
}
};
buttonGo.addListener(SWT.Selection,openURLListener);
textLocation.addListener(SWT.DefaultSelection,openURLListener);
finalActionactionBackward=
newAction(
"&Backword",
ImageDescriptor.createFromFile(
null,
"C:/icons/web/backward.gif")){
publicvoidrun(){
browser.back();
}
};
actionBackward.setEnabled(false);
finalActionactionForward=
newAction(
"&Forward",
ImageDescriptor.createFromFile(
null,
"C:/icons/web/forward.gif")){
publicvoidrun(){
browser.forward();
}
};
actionForward.setEnabled(false);
ActionactionStop=
newAction(
"&Stop",
ImageDescriptor.createFromFile(null,"C:/icons/web/stop.gif")){
publicvoidrun(){
browser.stop();
}
};
ActionactionRefresh=
newAction(
"&Refresh",
ImageDescriptor.createFromFile(
null,
"C:/icons/web/refresh.gif")){
publicvoidrun(){
browser.refresh();
}
};
ActionactionHome=
newAction(
"&Home",
ImageDescriptor.createFromFile(null,"C:/icons/web/home.gif")){
publicvoidrun(){
browser.setUrl("http://www.eclipse.org");
}
};
manager.add(actionBackward);
manager.add(actionForward);
manager.add(actionStop);
manager.add(actionRefresh);
manager.add(actionHome);
manager.update(true);
toolBar.pack();
browser.addLocationListener(newLocationListener(){
publicvoidchanging(LocationEventevent){
textLocation.setText(event.location);
}
publicvoidchanged(LocationEventevent){
actionBackward.setEnabled(browser.isBackEnabled());
actionForward.setEnabled(browser.isForwardEnabled());
manager.update(false);
}
});
browser.addProgressListener(newProgressListener(){
publicvoidchanged(ProgressEventevent){
progressBar.setMaximum(event.total);
progressBar.setSelection(event.current);
}
publicvoidcompleted(ProgressEventevent){
progressBar.setSelection(0);
}
});
browser.addStatusTextListener(newStatusTextListener(){
publicvoidchanged(StatusTextEventevent){
labelStatus.setText(event.text);
}
});
browser.addTitleListener(newTitleListener(){
publicvoidchanged(TitleEventevent){
shell.setText(event.title+"-poweredbySWT");
}
});
initialize(display,browser);
shell.setSize(500,400);
shell.open();
browser.setText("<html><body>"+"<h1>SWT&JFace</h1>"+"</body/html>");
while(!shell.isDisposed()){
if(!display.readAndDispatch()){
display.sleep();
}
}
display.dispose();
}
staticvoidinitialize(finalDisplaydisplay,Browserbrowser){
browser.addOpenWindowListener(newOpenWindowListener(){
publicvoidopen(WindowEventevent){
Shellshell=newShell(display);
shell.setText("NewWindow");
shell.setLayout(newFillLayout());
Browserbrowser=newBrowser(shell,SWT.NONE);
initialize(display,browser);
event.browser=browser;
}
});
browser.addVisibilityWindowListener(newVisibilityWindowListener(){
publicvoidhide(WindowEventevent){
Browserbrowser=(Browser)event.widget;
Shellshell=browser.getShell();
shell.setVisible(false);
}
publicvoidshow(WindowEventevent){
Browserbrowser=(Browser)event.widget;
Shellshell=browser.getShell();
if(event.location!=null)
shell.setLocation(event.location);
if(event.size!=null){
Pointsize=event.size;
shell.setSize(shell.computeSize(size.x,size.y));
}
shell.open();
}
});
browser.addCloseWindowListener(newCloseWindowListener(){
publicvoidclose(WindowEventevent){
Browserbrowser=(Browser)event.widget;
Shellshell=browser.getShell();
shell.close();
}
});
}
publicstaticvoidmain(String[]args){
newSWTBrowser();
}
}