前段时间一个客户说能不能在程序(web应用)运行的时候不要用普通的浏览去访问,比如直接双击桌面上的图标就运行程序,也不用输访问地址,也没有浏览器的菜单,导航按钮等,也就是给web应用装个壳。。。 不好做啊 以前只是做个屏蔽,浏览器只显示标题栏,不过IE7、8在弹出的窗口中还是会有地址栏,去不掉。另外多窗口的浏览器使得判断窗口关闭更麻烦,甚至不可能。 Jin天在java2s上转了转发现有用eclipse的jar包开发浏览器的列子,下下来做了个测试,还行,跑起来了,这个程序只是在弹出新窗口的时候没做好,会用默认的浏览器打开。 不过我程序那程序中正好没有弹出窗口,还能用。哈哈。 贴出来大家一起来研究。
以下是那个程序, 记得在引eclipse包的时候直接引导eclipse的plugin下,复制出来引可能会要问题。
import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.*;
import org.eclipse.swt.events.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
/**
* This class implements a web browser
*/
public class AdvancedBrowser {
// The "at rest" text of the throbber
private static final String AT_REST = "Ready";
/**
* Runs the application
*
* @param location the initial location to display
*/
public void run(String location) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("Advanced Browser");
createContents(shell, location);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
/**
* Creates the main window's contents
*
* @param shell the main window
* @param location the initial location
*/
public void createContents(Shell shell, String location) {
shell.setLayout(new FormLayout());
// Create the composite to hold the buttons and text field
Composite controls = new Composite(shell, SWT.NONE);
FormData data = new FormData();
data.top = new FormAttachment(0, 0);
data.left = new FormAttachment(0, 0);
data.right = new FormAttachment(100, 0);
controls.setLayoutData(data);
// Create the status bar
Label status = new Label(shell, SWT.NONE);
data = new FormData();
data.left = new FormAttachment(0, 0);
data.right = new FormAttachment(100, 0);
data.bottom = new FormAttachment(100, 0);
status.setLayoutData(data);
// Create the web browser
final Browser browser = new Browser(shell, SWT.BORDER);
data = new FormData();
data.top = new FormAttachment(controls);
data.bottom = new FormAttachment(status);
data.left = new FormAttachment(0, 0);
data.right = new FormAttachment(100, 0);
browser.setLayoutData(data);
// Create the controls and wire them to the browser
controls.setLayout(new GridLayout(7, false));
// Create the back button
Button button = new Button(controls, SWT.PUSH);
button.setText("Back");
button.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
browser.back();
}
});
// Create the forward button
button = new Button(controls, SWT.PUSH);
button.setText("Forward");
button.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
browser.forward();
}
});
// Create the refresh button
button = new Button(controls, SWT.PUSH);
button.setText("Refresh");
button.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
browser.refresh();
}
});
// Create the stop button
button = new Button(controls, SWT.PUSH);
button.setText("Stop");
button.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
browser.stop();
}
});
// Create the address entry field and set focus to it
final Text url = new Text(controls, SWT.BORDER);
url.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
url.setFocus();
// Create the go button
button = new Button(controls, SWT.PUSH);
button.setText("Go");
button.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
browser.setUrl(url.getText());
}
});
// Create the animated "throbber"
Label throbber = new Label(controls, SWT.NONE);
throbber.setText(AT_REST);
// Allow users to hit enter to go to the typed URL
shell.setDefaultButton(button);
// Add event handlers
browser.addCloseWindowListener(new AdvancedCloseWindowListener());
browser.addLocationListener(new AdvancedLocationListener(url));
browser.addProgressListener(new AdvancedProgressListener(throbber));
browser.addStatusTextListener(new AdvancedStatusTextListener(status));
// Go to the initial URL
if (location != null) {
browser.setUrl(location);
}
}
/**
* This class implements a CloseWindowListener for AdvancedBrowser
*/
class AdvancedCloseWindowListener implements CloseWindowListener {
/**
* Called when the parent window should be closed
*/
public void close(WindowEvent event) {
// Close the parent window
((Browser) event.widget).getShell().close();
}
}
/**
* This class implements a LocationListener for AdvancedBrowser
*/
class AdvancedLocationListener implements LocationListener {
// The address text box to update
private Text location;
/**
* Constructs an AdvancedLocationListener
*
* @param text the address text box to update
*/
public AdvancedLocationListener(Text text) {
// Store the address box for updates
location = text;
}
/**
* Called before the location changes
*
* @param event the event
*/
public void changing(LocationEvent event) {
// Show the location that's loading
location.setText("Loading " + event.location + "...");
}
/**
* Called after the location changes
*
* @param event the event
*/
public void changed(LocationEvent event) {
// Show the loaded location
location.setText(event.location);
}
}
/**
* This class implements a ProgressListener for AdvancedBrowser
*/
class AdvancedProgressListener implements ProgressListener {
// The label on which to report progress
private Label progress;
/**
* Constructs an AdvancedProgressListener
*
* @param label the label on which to report progress
*/
public AdvancedProgressListener(Label label) {
// Store the label on which to report updates
progress = label;
}
/**
* Called when progress is made
*
* @param event the event
*/
public void changed(ProgressEvent event) {
// Avoid divide-by-zero
if (event.total != 0) {
// Calculate a percentage and display it
int percent = (int) (event.current / event.total);
progress.setText(percent + "%");
} else {
// Since we can't calculate a percent, show confusion :-)
progress.setText("???");
}
}
/**
* Called when load is complete
*
* @param event the event
*/
public void completed(ProgressEvent event) {
// Reset to the "at rest" message
progress.setText(AT_REST);
}
}
/**
* This class implements a StatusTextListener for AdvancedBrowser
*/
class AdvancedStatusTextListener implements StatusTextListener {
// The label on which to report status
private Label status;
/**
* Constructs an AdvancedStatusTextListener
*
* @param label the label on which to report status
*/
public AdvancedStatusTextListener(Label label) {
// Store the label on which to report status
status = label;
}
/**
* Called when the status changes
*
* @param event the event
*/
public void changed(StatusTextEvent event) {
// Report the status
status.setText(event.text);
}
}
/**
* The application entry point
*
* @param args the command line arguments
*/
public static void main(String[] args) {
new AdvancedBrowser().run(args.length == 0 ? null : args[0]);
}
}
程序运行效果:
分享到:
相关推荐
Eclipse工程则表明这个示例是在Eclipse IDE中构建的,这是一个广泛使用的Java开发工具,提供了项目管理、编辑、调试等功能。 描述中提到"最简单的Java应用嵌入浏览器代码",这意味着这个示例将展示一个基础的实现,...
3. **网络编程**:开发浏览器需要处理HTTP和HTTPS协议,因此理解Java的`java.net`包至关重要。开发者需要知道如何建立TCP连接,发送HTTP请求,以及接收和解析响应。 4. **HTML和CSS解析**:浏览器需要解析和渲染...
2. **工作台(Workbench)**:Eclipse的工作台是一个组织和管理开发项目的框架,它包含了多个视图,如项目浏览器、包浏览器、源代码查看器等,帮助用户在多个任务间切换。 3. **调试工具**:Eclipse提供了强大的...
### Eclipse中Web应用开发知识点详解 #### 一、概述 在《Eclipse中Web应用的开发》这篇文档中,作者李旭成详细介绍了如何在Eclipse集成开发环境中进行Web应用开发的基本步骤。本文将深入解析该文档中的核心知识点,...
java环境安装是Eclipse_java开发环境配置的第一步,需要安装java开发工具包(JDK),本文使用java6开发,老师使用1.6.0_45版本开发。在安装java环境时,需要将jdk和jre全部安装,并配置环境变量,包括classpath和...
总的来说,这个课程设计通过实际操作,让学生深入理解Java编程、Eclipse开发工具的使用以及Web浏览器的工作原理,旨在培养学生的编程技能、问题解决能力和团队合作精神。同时,也是对现有浏览器市场的挑战,鼓励创新...
GWT(Google Web Toolkit)是Google推出的一款开源的JavaScript开发框架,它允许开发者使用Java语言来编写Web应用程序,然后自动生成兼容多种浏览器的JavaScript代码。Eclipse是一款广泛使用的集成开发环境(IDE),...
在这个场景下,"Java内嵌浏览器eclipse.swt插件版"指的是使用SWT来实现Java应用程序中的内嵌浏览器功能。 SWT是Eclipse项目的一部分,设计用于替代Java Swing,提供更丰富的图形用户界面和更好的性能。它利用了操作...
Eclipse是一款广泛使用的Java集成开发环境(IDE),而Firefox是一款流行的网页浏览器。在开发GWT项目时,为了方便调试和测试,通常需要在Eclipse中安装GWT插件,并在Firefox中添加相应的扩展。 标题中提到的...
Eclipse 插件开发是Java开发领域中的一个重要分支,它允许开发者扩展Eclipse IDE的功能,以满足特定项目或团队的需求。官方示例是学习和掌握Eclipse插件开发的宝贵资源,它们通常包含了丰富的代码片段和详细的注释,...
在IT行业中,Eclipse是一款广泛使用的开源集成开发环境(IDE),尤其在Java开发领域,它以其强大的功能和灵活性深受开发者喜爱。本篇文章将详细介绍如何利用Eclipse进行J2EE应用程序的开发,帮助初学者和有经验的...
Eclipse Forms是一种用于创建丰富客户端界面的技术,它可以让你的应用程序在不使用Web浏览器的情况下展现出类似Web的效果。这种技术允许开发者对界面组件拥有完全的控制权,同时保持了Eclipse平台的跨平台特性。...
在这个"eclipse4.2汉化包.rar"压缩文件中,包含的是针对Eclipse 4.2进行汉化的资源,使得中国用户可以更加方便地使用这个强大的开发工具。 1. **Eclipse 4.2新特性**: - **改进的UI设计**:Juno引入了全新的...
总之,"selenium+eclipse开发需要的所有jar包"是指在Eclipse环境中进行Selenium WebDriver测试所需的一系列库文件,而"43.3版本的Firefox"则涉及到特定版本浏览器的兼容性问题。通过正确配置这些资源,开发者可以在...
在开发浏览器时,我们可以使用Eclipse来编写、编译和调试浏览器的代码。 本文围绕JAVA浏览器的开发和设计展开讨论,涵盖了浏览器的基本功能、面向对象编程、网络编程方法、模型建立、网页浏览器设计等多个方面的...
为了使用Eclipse进行开发,需要配置Java环境、Web容器和Eclipse插件。 一、Java环境配置 Java环境是Eclipse的基础环境,需要安装Java 7以上版本。在安装完成后,需要配置环境变量,包括classpath和Path。在Path中...
2. **基本操作**:包括创建新项目、导入现有项目、组织源代码目录结构、编写和运行代码、使用包浏览器和导航器等。 3. **构建系统**:介绍如何使用Maven或Gradle进行项目构建,设置依赖、打包和部署。 4. **调试...
在这个实训项目中,学生被要求使用Java来开发一个网页浏览器,这涉及到对Java基础、Swing库以及软件开发流程的理解和实践。 首先,开发环境是Eclipse,这是一个流行的Java集成开发环境(IDE),提供了编写、调试和...
8. **BabelLanguagePack-eclipse.orion-zh_4.4.0.v20140623020002.zip**:Orion是Eclipse的一个云开发环境,可以在浏览器中运行,此语言包将其汉化。 9. **BabelLanguagePack-technology.packaging-zh_4.4.0.v...