{"id":10277,"date":"2015-08-26T07:58:16","date_gmt":"2015-08-26T11:58:16","guid":{"rendered":"http:\/\/bangla.salearningschool.com\/?p=10277"},"modified":"2015-08-24T08:47:38","modified_gmt":"2015-08-24T12:47:38","slug":"implementation-of-a-simple-browser-in-swing-the-user-can-specify-a-url-to-load-into-the-browser-jeditorpane","status":"publish","type":"post","link":"http:\/\/bangla.sitestree.com\/?p=10277","title":{"rendered":"Implementation of a simple browser in Swing (The user can specify a URL to load into the browser (JEditorPane))"},"content":{"rendered":"<p style=\"text-align: justify;\">Browser.java Implementation of a simple browser in Swing. The user can specify a URL to load into the browser (JEditorPane). By attaching an Hyperlink Listener, the editor pane is responsive to hyperlinks selected by the user. Uses the following class and image:<\/p>\n<pre>\r\nimport javax.swing.*;\r\nimport javax.swing.event.*;\r\nimport java.awt.*;\r\nimport java.awt.event.*;\r\nimport java.net.*;\r\nimport java.io.*;\r\n\r\n\/** Very simplistic \"Web browser\" using Swing. Supply a URL on\r\n\u00a0*\u00a0 the command line to see it initially and to set the\r\n\u00a0*\u00a0 destination of the \"home\" button.\r\n\u00a0*\r\n\u00a0 *\/\r\n\r\npublic class Browser extends JFrame implements HyperlinkListener, \r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ActionListener {\r\n\u00a0 public static void main(String[] args) {\r\n\u00a0\u00a0\u00a0 if (args.length == 0)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 new Browser(\"http:\/\/www.corewebprogramming.com\/\");\r\n\u00a0\u00a0\u00a0 else\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 new Browser(args[0]);\r\n\u00a0 }\r\n\r\n\u00a0 private JIconButton homeButton;\r\n\u00a0 private JTextField urlField;\r\n\u00a0 private JEditorPane htmlPane;\r\n\u00a0 private String initialURL;\r\n\r\n\u00a0 public Browser(String initialURL) {\r\n\u00a0\u00a0\u00a0 super(\"Simple Swing Browser\");\r\n\u00a0\u00a0\u00a0 this.initialURL = initialURL;\r\n\u00a0\u00a0\u00a0 addWindowListener(new ExitListener());\r\n\u00a0\u00a0\u00a0 WindowUtilities.setNativeLookAndFeel();\r\n\r\n\u00a0\u00a0\u00a0 JPanel topPanel = new JPanel();\r\n\u00a0\u00a0\u00a0 topPanel.setBackground(Color.lightGray);\r\n\u00a0\u00a0\u00a0 homeButton = new JIconButton(\"home.gif\");\r\n\u00a0\u00a0\u00a0 homeButton.addActionListener(this);\r\n\u00a0\u00a0\u00a0 JLabel urlLabel = new JLabel(\"URL:\");\r\n\u00a0\u00a0\u00a0 urlField = new JTextField(30);\r\n\u00a0\u00a0\u00a0 urlField.setText(initialURL);\r\n\u00a0\u00a0\u00a0 urlField.addActionListener(this);\r\n\u00a0\u00a0\u00a0 topPanel.add(homeButton);\r\n\u00a0\u00a0\u00a0 topPanel.add(urlLabel);\r\n\u00a0\u00a0\u00a0 topPanel.add(urlField);\r\n\u00a0\u00a0\u00a0 getContentPane().add(topPanel, BorderLayout.NORTH);\r\n\r\n\u00a0\u00a0\u00a0 try {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 htmlPane = new JEditorPane(initialURL);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 htmlPane.setEditable(false);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 htmlPane.addHyperlinkListener(this);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 JScrollPane scrollPane = new JScrollPane(htmlPane);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 getContentPane().add(scrollPane, BorderLayout.CENTER);\r\n\u00a0\u00a0\u00a0 } catch(IOException ioe) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 warnUser(\"Can't build HTML pane for \" + initialURL \r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 + \": \" + ioe);\r\n\u00a0\u00a0\u00a0 }\r\n\r\n\u00a0\u00a0\u00a0 Dimension screenSize = getToolkit().getScreenSize();\r\n\u00a0\u00a0\u00a0 int width = screenSize.width * 8 \/ 10;\r\n\u00a0\u00a0\u00a0 int height = screenSize.height * 8 \/ 10;\r\n\u00a0\u00a0\u00a0 setBounds(width\/8, height\/8, width, height);\r\n\u00a0\u00a0\u00a0 setVisible(true);\r\n\u00a0 }\r\n\r\n\u00a0 public void actionPerformed(ActionEvent event) {\r\n\u00a0\u00a0\u00a0 String url;\r\n\u00a0\u00a0\u00a0 if (event.getSource() == urlField) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 url = urlField.getText();\r\n\u00a0\u00a0\u00a0 } else { \/\/ Clicked \"home\" button instead of entering URL.\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 url = initialURL;\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 try {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 htmlPane.setPage(new URL(url));\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 urlField.setText(url);\r\n\u00a0\u00a0\u00a0 } catch(IOException ioe) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 warnUser(\"Can't follow link to \" + url + \": \" + ioe);\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0 }\r\n\r\n\u00a0 public void hyperlinkUpdate(HyperlinkEvent event) {\r\n\u00a0\u00a0\u00a0 if (event.getEventType() == \r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 HyperlinkEvent.EventType.ACTIVATED) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 try {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 htmlPane.setPage(event.getURL());\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 urlField.setText(event.getURL().toExternalForm());\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 } catch(IOException ioe) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 warnUser(\"Can't follow link to \" \r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 + event.getURL().toExternalForm() + \": \" + ioe);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0 }\r\n\r\n\u00a0 private void warnUser(String message) {\r\n\u00a0\u00a0\u00a0 JOptionPane.showMessageDialog(this, message, \"Error\", \r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 JOptionPane.ERROR_MESSAGE);\r\n\u00a0 }\r\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Browser.java Implementation of a simple browser in Swing. The user can specify a URL to load into the browser (JEditorPane). By attaching an Hyperlink Listener, the editor pane is responsive to hyperlinks selected by the user. Uses the following class and image: import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; import java.net.*; import java.io.*; \/** &hellip; <\/p>\n<p><a class=\"more-link btn\" href=\"http:\/\/bangla.sitestree.com\/?p=10277\">Continue reading<\/a><\/p>\n","protected":false},"author":130,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1417,1424],"tags":[706,308,285],"class_list":["post-10277","post","type-post","status-publish","format-standard","hentry","category-code-programming-samples--","category-javaj2eej2me","tag-code","tag-java","tag-285","item-wrap"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":27213,"url":"http:\/\/bangla.sitestree.com\/?p=27213","url_meta":{"origin":10277,"position":0},"title":"Implementation of a simple browser in Swing (The user can specify a URL to load into the browser (JEditorPane)) #Programming Code Examples #Java\/J2EE\/J2ME #Advanced Swing","author":"Author-Check- Article-or-Video","date":"May 14, 2021","format":false,"excerpt":"Browser.java Implementation of a simple browser in Swing. The user can specify a URL to load into the browser (JEditorPane). By attaching an Hyperlink Listener, the editor pane is responsive to hyperlinks selected by the user. Uses the following class and image: import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*;\u2026","rel":"","context":"In &quot;FromSitesTree.com&quot;","block_context":{"text":"FromSitesTree.com","link":"http:\/\/bangla.sitestree.com\/?cat=1917"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":10150,"url":"http:\/\/bangla.sitestree.com\/?p=10150","url_meta":{"origin":10277,"position":1},"title":"ServletTemplate.java Starting point for servlets.","author":"","date":"August 13, 2015","format":false,"excerpt":"ServletTemplate.java Starting point for servlets. import java.io.*; import javax.servlet.*; import javax.servlet.http.*; \/** Servlet template. \u00a0* \u00a0 \u00a0*\u00a0 Taken from Core Web Programming Java 2 Edition \u00a0*\u00a0 from Prentice Hall and Sun Microsystems Press, \u00a0*\u00a0 . \u00a0*\u00a0 May be freely used or adapted. \u00a0*\/ public class ServletTemplate extends HttpServlet { \u00a0\u2026","rel":"","context":"In &quot;Code . Programming Samples . \u09aa\u09cd\u09b0\u09cb\u0997\u09cd\u09b0\u09be\u09ae \u0989\u09a6\u09be\u09b9\u09b0\u09a8&quot;","block_context":{"text":"Code . Programming Samples . \u09aa\u09cd\u09b0\u09cb\u0997\u09cd\u09b0\u09be\u09ae \u0989\u09a6\u09be\u09b9\u09b0\u09a8","link":"http:\/\/bangla.sitestree.com\/?cat=1417"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":10166,"url":"http:\/\/bangla.sitestree.com\/?p=10166","url_meta":{"origin":10277,"position":2},"title":"ShowRequestHeaders.java Servlet that shows all request headers sent by browser in current request.","author":"","date":"August 17, 2015","format":false,"excerpt":"ShowRequestHeaders.java Servlet that shows all request headers sent by browser in current request. package cwp; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; \/** Shows all the request headers sent on this request. * * Taken from Core Web Programming Java 2 Edition * from Prentice Hall and Sun Microsystems\u2026","rel":"","context":"In &quot;Code . Programming Samples . \u09aa\u09cd\u09b0\u09cb\u0997\u09cd\u09b0\u09be\u09ae \u0989\u09a6\u09be\u09b9\u09b0\u09a8&quot;","block_context":{"text":"Code . Programming Samples . \u09aa\u09cd\u09b0\u09cb\u0997\u09cd\u09b0\u09be\u09ae \u0989\u09a6\u09be\u09b9\u09b0\u09a8","link":"http:\/\/bangla.sitestree.com\/?cat=1417"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":26531,"url":"http:\/\/bangla.sitestree.com\/?p=26531","url_meta":{"origin":10277,"position":3},"title":"ShowRequestHeaders.java  Servlet that shows all request headers sent by browser in current request. #Programming Code Examples #Java\/J2EE\/J2ME #Servlet","author":"Author-Check- Article-or-Video","date":"April 27, 2021","format":false,"excerpt":"ShowRequestHeaders.java Servlet that shows all request headers sent by browser in current request. package cwp; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; \/** Shows all the request headers sent on this request. * * Taken from Core Web Programming Java 2 Edition * from Prentice Hall and Sun Microsystems\u2026","rel":"","context":"In &quot;FromSitesTree.com&quot;","block_context":{"text":"FromSitesTree.com","link":"http:\/\/bangla.sitestree.com\/?cat=1917"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":10214,"url":"http:\/\/bangla.sitestree.com\/?p=10214","url_meta":{"origin":10277,"position":4},"title":"Basic Swing Details","author":"","date":"August 25, 2015","format":false,"excerpt":"WindowUtilities.java Utility class that simplifies creating a window and setting the look and feel. ExitListener.java A WindowListener with support to close the window. JAppletExample.java A simple applet (JApplet) created in Swing. Illustrates setting the look and feel, adding components to the content pane, and changing the layout to FlowLayout (default\u2026","rel":"","context":"In &quot;Code . Programming Samples . \u09aa\u09cd\u09b0\u09cb\u0997\u09cd\u09b0\u09be\u09ae \u0989\u09a6\u09be\u09b9\u09b0\u09a8&quot;","block_context":{"text":"Code . Programming Samples . \u09aa\u09cd\u09b0\u09cb\u0997\u09cd\u09b0\u09be\u09ae \u0989\u09a6\u09be\u09b9\u09b0\u09a8","link":"http:\/\/bangla.sitestree.com\/?cat=1417"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":27184,"url":"http:\/\/bangla.sitestree.com\/?p=27184","url_meta":{"origin":10277,"position":5},"title":"Buggy Counter Applet.java Demonstrates that data shared by multiple threads is candidate for a potential race condition #Programming Code Examples #Java\/J2EE\/J2ME #Advanced Swing","author":"Author-Check- Article-or-Video","date":"May 13, 2021","format":false,"excerpt":"import java.applet.Applet; import java.awt.*; \/** Emulates the Counter and Counter2 classes, but this time * from an applet that invokes multiple versions of its own run * method. This version is likely to work correctly * except when an important customer is visiting. public class BuggyCounterApplet extends Applet implements Runnable{\u2026","rel":"","context":"In &quot;FromSitesTree.com&quot;","block_context":{"text":"FromSitesTree.com","link":"http:\/\/bangla.sitestree.com\/?cat=1917"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"http:\/\/bangla.sitestree.com\/index.php?rest_route=\/wp\/v2\/posts\/10277","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/bangla.sitestree.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/bangla.sitestree.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/bangla.sitestree.com\/index.php?rest_route=\/wp\/v2\/users\/130"}],"replies":[{"embeddable":true,"href":"http:\/\/bangla.sitestree.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=10277"}],"version-history":[{"count":1,"href":"http:\/\/bangla.sitestree.com\/index.php?rest_route=\/wp\/v2\/posts\/10277\/revisions"}],"predecessor-version":[{"id":10278,"href":"http:\/\/bangla.sitestree.com\/index.php?rest_route=\/wp\/v2\/posts\/10277\/revisions\/10278"}],"wp:attachment":[{"href":"http:\/\/bangla.sitestree.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=10277"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/bangla.sitestree.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=10277"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/bangla.sitestree.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=10277"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}