`
daoshud1
  • 浏览: 555170 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

java swing 浏览网页

阅读更多
目前来说,java swing 中嵌入网页,使用DJNativeSwing是最有效地方法。DJNativeSwing其实是通过内部桥来调用SWT的Browser控件。
附上代码:
public class Mains extends JPanel {
	
	private static final long serialVersionUID = 1L;

	final static public String LS = System.getProperty("line.separator", "/n");

	final static public String FS = System.getProperty("file.separator", "//");

	final static StringBuffer jsDimension;

	static {
		jsDimension = new StringBuffer();
		jsDimension.append("var width = 0;").append(LS);
		jsDimension.append("var height = 0;").append(LS);
		jsDimension.append("if(document.documentElement) {").append(LS);
		jsDimension
				.append("  width = Math.max(width, document.documentElement.scrollWidth);")
				.append(LS);
		jsDimension
				.append("  height = Math.max(height, document.documentElement.scrollHeight);")
				.append(LS);
		jsDimension.append("}").append(LS);
		jsDimension.append("if(self.innerWidth) {").append(LS);
		jsDimension.append("  width = Math.max(width, self.innerWidth);")
				.append(LS);
		jsDimension.append("  height = Math.max(height, self.innerHeight);")
				.append(LS);
		jsDimension.append("}").append(LS);
		jsDimension.append("if(document.body.scrollWidth) {").append(LS);
		jsDimension.append(
				"  width = Math.max(width, document.body.scrollWidth);")
				.append(LS);
		jsDimension.append(
				"  height = Math.max(height, document.body.scrollHeight);")
				.append(LS);
		jsDimension.append("}").append(LS);
		jsDimension.append("return width + ':' + height;");
	}

	public Mains(final String url, final int maxWidth, final int maxHeight) {
		super(new BorderLayout());
		JPanel webBrowserPanel = new JPanel(new BorderLayout());
		final String fileName = System.currentTimeMillis() + ".jpg";
		final JWebBrowser webBrowser = new JWebBrowser(null);
		webBrowser.setBarsVisible(false);
		webBrowser.navigate(url);
		webBrowserPanel.add(webBrowser, BorderLayout.CENTER);
		add(webBrowserPanel, BorderLayout.CENTER);

		JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER, 4, 4));

		webBrowser.addWebBrowserListener(new WebBrowserAdapter() {

			public void loadingProgressChanged(WebBrowserEvent e) {
				//判断是否加载完成
				if (e.getWebBrowser().getLoadingProgress() == 100) {
					//进行网页截图
//					String result = (String) webBrowser
//							.executeJavascriptWithResult(jsDimension.toString());
//					int index = result == null ? -1 : result.indexOf(":");
//					NativeComponent nativeComponent = webBrowser
//							.getNativeComponent();
//					Dimension originalSize = nativeComponent.getSize();
//					Dimension imageSize = new Dimension(Integer.parseInt(result
//							.substring(0, index)), Integer.parseInt(result
//							.substring(index + 1)));
//					imageSize.width = Math.max(originalSize.width,
//							imageSize.width + 50);
//					imageSize.height = Math.max(originalSize.height,
//							imageSize.height + 50);
//					nativeComponent.setSize(imageSize);
//					BufferedImage image = new BufferedImage(imageSize.width,
//							imageSize.height, BufferedImage.TYPE_INT_RGB);
//					nativeComponent.paintComponent(image);
//					nativeComponent.setSize(originalSize);
//					// 
//					if (imageSize.width > maxWidth
//							|| imageSize.height > maxHeight) {
//						// 
//						image = image.getSubimage(0, 0, maxWidth, maxHeight);
//						/*
//						 * int width = image.getWidth(), height =
//						 * image .getHeight(); AffineTransform tx = new
//						 * AffineTransform(); tx.scale((double) maxWidth /
//						 * width, (double) maxHeight / height);
//						 * AffineTransformOp op = new AffineTransformOp(tx,
//						 * AffineTransformOp.TYPE_NEAREST_NEIGHBOR); //锟斤拷小 image
//						 * = op.filter(image, null);
//						 */
//					}
//					try {
//						ImageIO.write(image, "jpg", new File(fileName));
//					} catch (IOException ex) {
//						ex.printStackTrace();
//					}
				}
			}
		}

		);
		add(panel, BorderLayout.SOUTH);

	}

	public static void main(String[] args) {
		NativeInterface.open();
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				JFrame frame = new JFrame("java swing 浏览器");
				frame.getContentPane().add(
						new Mains("http://www.baidu.com", 1024, 768),
						BorderLayout.CENTER);
				frame.setSize(800, 600);
//				frame.invalidate();
//				frame.pack();
				frame.setVisible(true);
			}
		});
		NativeInterface.runEventPump();
	}

需要导入的jar包有:
DJNativeSwing-SWT.jar
DJNativeSwing.jar
swt.jar
运行时如果swt的版本不够,会报以下错误


附上swt4.3的jar包
  • 大小: 246.8 KB
  • swt.jar (1.8 MB)
  • 下载次数: 168
分享到:
评论

相关推荐

    java swing界面显示IE网页

    java swing GUI界面显示IE网页 根据网址跳转到相应网站

    java浏览器+swing嵌套网页+源码免费

    Java浏览器是Java编程环境中用于显示和交互Web内容的软件组件,它允许开发者在Java应用程序中嵌入网页浏览功能。在本资源中,我们关注的是使用Swing库来实现这一目标,Swing是Java Foundation Classes (JFC)的一部分...

    java Swing 文件批量上传 DEMO 源代码

    Java Swing 是Java GUI开发的一个重要库,主要用于创建桌面应用程序。在这个"java Swing 文件批量上传 DEMO 源代码"中,我们关注的核心是利用Swing构建一个用户界面,实现文件和文件夹的批量上传功能。这涉及到多个...

    java浏览器+swing嵌套网页+源码

    Java浏览器使用Swing进行嵌套网页是一个常见的技术实践,它允许开发者在Java应用程序中集成Web浏览功能。Swing是Java Foundation Classes (JFC)的一部分,提供了丰富的用户界面组件,包括用于构建桌面应用的窗口、...

    Java-Swing嵌入浏览器(本地浏览器和webkit浏览器-火狐内核)

    Java Swing 是Java GUI编程库的一部分,它允许开发者创建桌面应用程序。在某些场景下,我们可能需要在Swing应用中嵌入一个浏览器组件,以便展示网页内容或者与Web服务交互。这个压缩包文件“Java-Swing嵌入浏览器...

    JAVA Swing小游戏实例与代码

    虽然Java本身并不支持直接渲染网页,但可以通过JavaFX或嵌入WebView组件来实现简单的网络浏览功能。用户输入URL后,后台使用HttpURLConnection发送请求,获取HTML内容,然后显示在WebView中。此外,Swing可以提供...

    基于Java Swing的超链接标签

    例如,在`JTable`(一种用于显示表格数据的组件)中添加超链接功能可以使得用户能够直接点击单元格中的链接进行网页浏览或其他操作。本文将详细介绍如何在Java Swing环境中实现超链接标签以及超链接按钮,并提供具体...

    java 程序设计网页浏览器

    4. **GUI设计**:Java的Swing或JavaFX库用于创建用户界面。在浏览器中,你需要设计一个窗口,包含地址栏、前进/后退按钮、刷新按钮、书签等功能。使用JFrame作为主窗口,JPanel存放网页内容,JTextField用于输入URL...

    java图片浏览管理系统

    2. **Swing或JavaFX**:在Java中,Swing和JavaFX是两个常用的图形用户界面(GUI)工具包,用于创建桌面应用程序。Java图片浏览管理系统可能使用了其中之一来构建用户界面,包括按钮、文本框、滚动条、菜单等元素。 ...

    Java嵌入谷歌内核简单浏览器跨平台

    Java 嵌入式浏览器是将网页浏览功能集成到 Java 应用程序中的技术,使得开发者可以在自己的应用中实现网页展示、数据交互等功能。这里提到的"Java嵌入谷歌内核简单浏览器跨平台"项目,显然是利用了谷歌浏览器的渲染...

    Java编写的网页浏览器

    在实现网页浏览功能时,Java需要与Web服务器进行交互。这通常通过HTTP或HTTPS协议完成,Java提供了`java.net.URL`类和`java.net.HttpURLConnection`类来处理这些网络请求。开发者会使用这些类来获取网页内容,然后...

    基于Java Swing、HTML、MySQL的汽车租赁系统.zip

    1. **Java Swing**: Java Swing是Java Standard Edition (Java SE)的一部分,提供了一套用于构建桌面应用的GUI组件库。Swing使用事件驱动模型,允许用户通过图形界面与程序交互。它提供了丰富的组件,如按钮、文本框...

    基于java开发的网页浏览器

    在开发基于Java的网页浏览器时,Swing可以用来构建浏览器的基本框架,如地址栏、前进/后退按钮、页面视图等。 2. **JavaFX**: JavaFX是另一个用于创建现代桌面应用的Java库,它提供了更丰富的视觉效果和更好的性能...

    Java swing实现简单的浏览器源码免费分享.zip

    本项目是基于Java Swing实现的一个简单浏览器,它展现了如何利用Swing来模拟和实现网页浏览的功能。下面我们将深入探讨这个项目中的关键知识点。 1. **JFrame与JPanel**: - `JFrame` 是Swing中的主窗口类,用于...

    在SWING、SWT中嵌入浏览器

    然而,有时我们可能需要在这些应用中集成Web浏览功能,比如显示网页或者运行Web应用。这篇博客文章“在SWING、SWT中嵌入浏览器”就探讨了如何在Java应用中实现这一功能。 首先,SWING是Java Foundation Classes ...

    java实现网页截图技术

    首先,要实现网页截图,我们需要依赖一些库,如Selenium WebDriver,它是一个用于Web应用程序测试的工具,能够模拟真实用户的行为,包括浏览网页、点击链接、填写表单等。此外,我们还需要一个图形库,如Java的...

    java实现网页浏览器

    首先,我们要了解Java中的Swing或JavaFX库,它们是构建图形用户界面(GUI)的关键。在这个简单的浏览器中,可能会使用JFrame作为主窗口,JButton来表示各种功能按钮(如前进、后退、刷新、停止等),JTextField或...

    swing内嵌网页(demo和jar)

    这些组件允许我们在Java应用中显示HTML内容,甚至可以浏览整个网页。下面将详细探讨Swing内嵌网页的相关知识点。 1. **JEditorPane**: JEditorPane是Swing中的一个文本组件,它能够显示和编辑基本的HTML文本,以及...

    JAVA仿IE浏览器源码

    - **Java Swing**: 项目中的GUI组件主要由Java Swing库构建,如JFrame、JButton、JLabel等,它们是Java用于创建桌面应用的基本元素。 - **AWT事件处理**: 通过监听器接口(如ActionListener)处理用户的交互事件,...

Global site tag (gtag.js) - Google Analytics