浏览 2133 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-03-15
我用HtmlUnit很容易就解析到了所有图片: HtmlPage page=webClient.getPage("http://www.xxx.com"); Iterable<HtmlElement> iterable=page.getAllHtmlChildElements(); Iterator<HtmlElement> hIterator=iterable.iterator(); while (hIterator.hasNext()) { HtmlElement htmlElement = (HtmlElement) hIterator.next(); if (htmlElement instanceof HtmlImage) { String imageurl=((HtmlImage)htmlElement).getAttributeValue("src"); ShareURL.imageURLs.add(new URL(imageurl)); } } 但是我得把图片显示出来在Java的JFRAME中,怎么办呢?我在Sun的Tutorial中搜到一个办法,就是利用Swing的控件来实现: http://java.sun.com/docs/books/tutorial/uiswing/components/html.html ... String initialText = "<html>\n" + "Color and font test:\n" + "<ul>\n" + "<li><font color=red>red</font>\n" + "<li><font color=blue>blue</font>\n" + "<li><font color=green>green</font>\n" + "<li><font size=-2>small</font>\n" + "<li><font size=+2>large</font>\n" + "<li><i>italic</i>\n" + "<li><b>bold</b>\n" + "</ul>\n"; htmlTextArea = new JTextArea(10, 20); htmlTextArea.setText(initialText); ... theLabel = new JLabel(initialText); ... 大概就是JLabel能够显示Html代码,JButton也可以用用Html代码生成,这个link也有: button = new JButton("<html><b><u>T</u>wo</b><br>lines</html>"); 但是因为我解析到的图片路径是远程的,不知为什么显示不出来,所以就想用嵌入浏览器的方式来实现,从google又搜索了一下,找到了标题中的EZJComIExplorer18,利用他的jar包中提供的方法很容易就实现了显示图片的功能,当然因为它可以嵌入到JFrame中,所以可准确控制它的navigation路径,上下按钮也可以用了,并且这个貌似还有其它功能,可以调用Microsoft的ActiveX控件.具体可以到他们的网站上了解. [url] http://ezjcom.com/ [/url] 我的嵌入浏览器到JFrame的代码大概是这段Sample code: // Shows how to embed Internet Explorer in a Swing panel. // Note that the examples of using IE Java API, as shown in // other sample files, can also be used on this instance // of IE. import iexplorer.InternetExplorer; import iexplorer.IWebBrowserApp; import iexplorer.WebBrowser; import ezjcom.JComObject; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JTextField; import javax.swing.JPanel; import javax.swing.JFrame; import java.awt.BorderLayout; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class WebFrame extends JFrame { WebBrowser browser; JButton button = new JButton(); JLabel label = new JLabel( "URL: " );; JTextField url = new JTextField( 12 ); JPanel buttonPanel = new JPanel(); /** TO BE DONE ** Change the string below to the "home" site for this program. **/ String home = "http://www.your-home-site.com/"; // This method is called when the Test button is clicked. void onButtonClick() { try { // Navigate to the URL typed. browser.getIWebBrowser2().Navigate( url.getText()); } catch (Exception ex) { ex.printStackTrace(); } } void showBrowser() { try { setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); getContentPane().setLayout( new BorderLayout()); // Create a container instance and add it to the frame. ezjcom.JComActiveXContainer activexContainer = new ezjcom.JComActiveXContainer(); getContentPane().add( activexContainer, BorderLayout.CENTER ); button.setText( "Navigate" ); buttonPanel.add( label ); buttonPanel.add( url ); buttonPanel.add( button ); getContentPane().add( buttonPanel, BorderLayout.SOUTH ); button.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent e ) { onButtonClick(); } }); // Create the ActiveX object and attach it to the container. browser = new WebBrowser(); activexContainer.setActiveX( browser ); // Provide a home. browser.getIWebBrowser2().Navigate( home ); // Show the frame. setSize( 600, 400 ); setVisible( true ); } catch (Exception ex) { ex.printStackTrace(); } } public static void main( String[] args ) { new WebFrame().showBrowser(); } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-03-15
这种东西挺无聊的,windows大部分软件都是COM,很容易在VBscript里进行调用,java这种方式十分十分的笨拙。
|
|
返回顶楼 | |
发表时间:2009-03-16
ray_linn 写道 这种东西挺无聊的,windows大部分软件都是COM,很容易在VBscript里进行调用,java这种方式十分十分的笨拙。 有道理,但是因为想用Java实现就这样了,VB我自己也不太会,呵呵! |
|
返回顶楼 | |